Mybatis下collections使用pageHelper进行分页
pageHelper在对mybatis一对多分页时造成查询总页数结果不对的情况。

可以做出如下修改:
service层:
public CommonResult worksList(String userId, int page, int pageSize) throws Exception {
PageHelper.startPage(page, pageSize);
List<DesignDTO1> dtos = designMapper.worksList(userId);
for (DesignDTO1 dto : dtos) {
checkDesignerEdit(dto);
}
PageInfo p = new PageInfo(dtos);
Map map = new HashMap();
map.put("rows", p.getList());
map.put("totalCount", p.getTotal());
return CommonResult.success(map);
}
xml配置文件
<resultMap id="ResultMapDesignDTO1" type="com.zhx.web.design.model.DesignDTO1">
<id column="id" jdbcType="INTEGER" property="id"/>
<result column="works_id" property="worksId" jdbcType="VARCHAR"/>
<result column="works_name" property="worksName" jdbcType="VARCHAR"/>
<result column="status" property="status" jdbcType="INTEGER"/>
<result column="work_status" property="workStatus" jdbcType="INTEGER"/>
<result column="status_msg" property="statusMsg" jdbcType="VARCHAR"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="works_img_cover" property="workCoverImg" jdbcType="VARCHAR"/>
<association property="userInfo" javaType="com.zhx.web.design.model.UserDTO">
<result column="user_id" property="userId" jdbcType="VARCHAR" />
<result column="real_name" property="realName" jdbcType="VARCHAR" />
<result column="user_email" property="userEmail" jdbcType="VARCHAR" />
<result column="unit_name" property="unitName" jdbcType="VARCHAR" />
<result column="user_phone" property="userPhone" jdbcType="VARCHAR" />
</association>
<collection property="worksLog" ofType="com.zhx.web.design.model.WorksLog"
column="works_id"//这个参数会作为子查询的参数,需要和实体的属性参数一致
select="com.zhx.web.design.mapper.DesignMapper.getWorksLogs">
</collection>
</resultMap> <select id="getWorksLogs" resultMap="WorksLogs" parameterType="java.lang.String">
SELECT oper_time,memo
FROM works_log where works_id =#{worksId}//这里用works_id好像也没问题……测试了几次,用错误参数也能传递过来,
就是个占位符,实际参数会从collection中的column中传递过来
</select> <!--查询用户上传作品列表--> <select id="worksList" resultMap="ResultMapDesignDTO1" parameterType="java.lang.String"> SELECT ui.user_id,ui.real_name,ui.user_email,ui.unit_name,ui.user_phone,uw.id,uw.works_id ,uw.works_name, uw.create_time ,uw.status_show as status,uw.status as work_status,uw.works_img_cover, <include refid="showStatusMsg"></include> from user_works uw ,user_info ui where uw.user_id = ui.user_id and uw.user_id = #{userId} </select>
实体类
package com.zhx.web.design.model; import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize; import java.util.Date;
import java.util.List;
@JsonSerialize(include= JsonSerialize.Inclusion.NON_NULL)
public class DesignDTO1 {
/**
* 作品联系人信息
*/
private UserDTO userInfo; private Integer id;
/**
* 作品编号
*/
private String worksId;
/**
* 作品名称
*/
private String worksName; /**
* 上传时间
*/
@JsonFormat(pattern="yyyy年MM月dd日")
private Date createTime; /**
* 状态status_show
*/
private Integer status;
/**
* 状态描述
*/
private String statusMsg;
/**
* 作品封面图(图片名称)
*/
private String workCoverImg; /**
* 是否可修改
*/
private Integer edit;
/**
* 可修改剩余时间
*/
private Long edtiTime; /**
* 业务状态status
*/
private Integer workStatus;
/**
* 作品审核信息
*/
private List<WorksLog> worksLog; public UserDTO getUserInfo() {
return userInfo;
} public void setUserInfo(UserDTO userInfo) {
this.userInfo = userInfo;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getWorksId() {
return worksId;
} public void setWorksId(String worksId) {
this.worksId = worksId;
} public String getWorksName() {
return worksName;
} public void setWorksName(String worksName) {
this.worksName = worksName;
} public Date getCreateTime() {
return createTime;
} public void setCreateTime(Date createTime) {
this.createTime = createTime;
} public Integer getStatus() {
return status;
} public void setStatus(Integer status) {
this.status = status;
} public String getStatusMsg() {
return statusMsg;
} public void setStatusMsg(String statusMsg) {
this.statusMsg = statusMsg;
} public String getWorkCoverImg() {
return workCoverImg;
} public void setWorkCoverImg(String workCoverImg) {
this.workCoverImg = workCoverImg;
} public Integer getEdit() {
return edit;
} public void setEdit(Integer edit) {
this.edit = edit;
} public Long getEdtiTime() {
return edtiTime;
} public void setEdtiTime(Long edtiTime) {
this.edtiTime = edtiTime;
} public Integer getWorkStatus() {
return workStatus;
} public void setWorkStatus(Integer workStatus) {
this.workStatus = workStatus;
} public List<WorksLog> getWorksLog() {
return worksLog;
} public void setWorksLog(List<WorksLog> worksLog) {
this.worksLog = worksLog;
}
}
Mybatis下collections使用pageHelper进行分页的更多相关文章
- Mybatis插件原理和PageHelper结合实战分页插件(七)
今天和大家分享下mybatis的一个分页插件PageHelper,在讲解PageHelper之前我们需要先了解下mybatis的插件原理.PageHelper 的官方网站:https://github ...
- 浅谈PageHelper插件分页实现原理及大数据量下SQL查询效率问题解决
前因:项目一直使用的是PageHelper实现分页功能,项目前期数据量较少一直没有什么问题.随着业务扩增,数据库扩增PageHelper出现了明显的性能问题.几十万甚至上百万的单表数据查询性能缓慢,需 ...
- SpringBoot+Mybatis+PageHelper实现分页
SpringBoot+Mybatis+PageHelper实现分页 mybatis自己没有分页功能,我们可以通过PageHelper工具来实现分页,非常简单方便 第一步:添加依赖 <depend ...
- spring boot集成mybatis(2) - 使用pagehelper实现分页
Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...
- Spring boot入门(三):SpringBoot集成结合AdminLTE(Freemarker),利用generate自动生成代码,利用DataTable和PageHelper进行分页显示
关于SpringBoot和PageHelper,前篇博客已经介绍过Spring boot入门(二):Spring boot集成MySql,Mybatis和PageHelper插件,前篇博客大致讲述了S ...
- SpringBoot使用PageHelper进行分页
因为SpringBoot就是为了实现没有配置文件,因此之前手动在Mybatis中配置的PageHelper现在需要重新配置,而且配置方式与之前的SSM框架中还是有点点区别. 首先需要在pom文件 ...
- Mybatis Generator插件和PageHelper使用
最近,开始接触web项目开发,项目使用springboot和mybatis,以前一直以为开发过程中实体类,mybatis的xml文件都需要自己手动的去创建. 同事推荐说Mybatis Generato ...
- SSM+Maven使用PageHelper插件分页
官方网站: https://pagehelper.github.io/docs/howtouse/#2-%E9%85%8D%E7%BD%AE%E6%8B%A6%E6%88%AA%E5%99%A8%E6 ...
- PageHelper实现分页查询
PageHelper是基于拦截器实现的myBatis分页插件 PageHelper的Github主页 : https://github.com/pagehelper/Mybatis-PageHelpe ...
随机推荐
- js——作用域和闭包
1. js是编译语言,但是它不是提前编译,编译结果不能在分布式系统中移植.大部分情况下,js的编译发生在代码执行前的几微秒(甚至更短) 2. 一般的编译步骤 分词/词法分析:把字符串分解成词法单元 ...
- spring各版本jar包和源码
spring各版本jar包和源码 spring历史版本源码:https://github.com/spring-projects/spring-framework/tags spring历史jar包和 ...
- Linux Oracle bash: “sqlplus / as sysdba”: command not found 解决方法
bash: sqlplus: command not found 解决方法 注:本文来源于 < bash: sqlplus: command not found 解决方法 > 1: ...
- Confluence 6 匿名访问远程 API
Confluence 管理员可能希望为匿名用户禁用远程访问 API.这样能够避免恶意软件随意在网站进行批量修改. 希望禁用远程访问 API: 在屏幕的右上角单击 控制台按钮 ,然后选择 General ...
- Confluence 6 在初始化配置时候的问题
提交一个 服务器请求(support request) 然后在你的服务请求中同时提供下面的信息. 下载一个 LDAP 浏览器,你可以通过这个确定你的 LDAP 服务器配置正确.Atlassian 推荐 ...
- centos7查看yum安装的软件及路径
rpm -qa 查看所有已安装软件名称 rpm -ql 软件名 显示软件的安装路径
- python并发编程之进程池,线程池,协程
需要注意一下不能无限的开进程,不能无限的开线程最常用的就是开进程池,开线程池.其中回调函数非常重要回调函数其实可以作为一种编程思想,谁好了谁就去掉 只要你用并发,就会有锁的问题,但是你不能一直去自己加 ...
- vue之node.js的简单介绍
一.什么是node.js? 它是可以运行JavaScript的服务平台,可以吧它当做一门后端程序,只是它的开发语言是JavaScript 二.安装 1.node.js的特性: - 非阻塞IO模型 - ...
- jsp 运行时报错Cannot find a method to write property [firstName] of type [java.lang.String] in a bean of type [main.Employee]
原因: 代码没有安装bean的格式写 setFirstName写成了setFristName 错误代码 public void setFristName(String firstName) { thi ...
- Android Studio 调用夜神模拟器
操作系统:Windows 10 x64 IDE:Android Studio 3.3 夜神模拟器 首先,启动夜神模拟器.快捷键WIN + R打开运行窗口,输入cmd,启动cmd.exe. 使用cd命令 ...