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 ...
随机推荐
- VUE 图片验证码
1. 概述 1.1 说明 在开发过程中,有时候需要使用图片验证码进行增加安全强度,在点击图片时更新新的图片验证码,记录此功能,以便后期使用. 2. 示例 2.1 vue示例代码 <templat ...
- PyJWT 使用
最近要用 Falsk 开发一个大点的后端,为了安全考虑,弃用传统的Cookie验证.转用JWT. 其实 Falsk 有一个 Falsk-JWT 但是我觉得封装的太高,还是喜欢通用的 PyJWT . J ...
- EventBus 3.0使用详解
01 前言 当我们进行项目开发的时候,往往是需要应用程序的各组件.组件与后台线程间进行通信,比如在子线程中进行请求数据,当数据请求完毕后通过Handler或者是广播通知UI,而两个Fragment之家 ...
- C# Excel行高、列宽、合并单元格、单元格边框线、冻结
private _Workbook _workBook = null;private Worksheet _workSheet = null;private Excel.Application _ex ...
- swift 学习- 27 -- 访问控制
// 访问控制 可以限定其源文件 或模块中的代码对你的代码的访问级别, 这个特性可以让我们隐藏代码的一些实现细节, 并且可以为其他人可以访问和使用的代码提供接口 // 你可以明确地给某个类型 (类, ...
- 在java中,OOA是什么?OOD是什么?OOP是什么?
注:本文来源于< 在java中,OOA是什么?OOD是什么?OOP是什么?> 在java中,OOA是什么?OOD是什么?OOP是什么? OOA Object-Oriented Anal ...
- vue的单选框
- yum安装软件内容
linux yum源改为阿里yum源 1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.back ...
- Python基础之类方法和静态方法
小叙一会儿: 通常情况下,在类中定义的所有函数(注意了,这里说的就是所有,跟self啥的没关系,self也只是一个再普通不过 的参数而已)都是对象的绑定方法,对象在调用绑定方法时会自动将自己作为参数传 ...
- 波哥博客Url
http://www.cnblogs.com/whatlonelytear/