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 ...
随机推荐
- winform数据存储的方式
存储的方式有三种: 一.SQL数据库 二.Access(office 2007版本以上是需要安装驱动的) 三.XML
- 在XIB 或者 SB 上面 实现 半透明的背景上添加UILabel是文字不透明
设透明背景的时候直接设置RGB值 然后设置Opacity即可
- 在Amazon FreeRTOS V10中使用运行时统计信息
在MCU on Eclipse网站上看到Erich Styger在8月2日发的博文,一篇关于在Amazon FreeRTOS V10中使用运行时统计信息的文章,本人觉得很有启发,特将其翻译过来以备参考 ...
- Struts2中类数据封装的方式
第一种方式:属性驱动提供对应属性的set方法进行数据的封装.表单的哪些属性需要封装数据,那么在对应的Action类中提供该属性的set方法即可.表单中的数据提交,最终找到Action类中的setXxx ...
- 细说Django的中间件
分析Django的生命周期,我们知道所有的http请求都要经过Django的中间件. 假如现在有一个需求,所有到达服务端的url请求都在系统中记录一条日志,该怎么做呢? Django的中间件的简介 D ...
- Confluence 6 使用一个主题到站点
主题被用来在你的 Confluence 站点中应用表现形式.请查看 Working with Themes 页面来查看如何应用你的整个站点和如何添加更多的主题. 希望在站点中应用主题: 进入 > ...
- MySQL外键使用详解
一.基本概念 1.MySQL中“键”和“索引”的定义相同,所以外键和主键一样也是索引的一种.不同的是MySQL会自动为所有表的主键进行索引,但是外键字段必须由用户进行明确的索引.用于外键关系的字段必须 ...
- SpringCloud简介
1.什么是微服务? 微服务就是不同的模块部署在不同的服务器上面,通过接口去访问就是微服务 作用:利用分布式解决网站高并发带来的问题 2.什么是集群? 多台服务器部署相同应用构成一个集群 作用:通过负载 ...
- 用flask实现的分页
一.flask实现的分页组件 from urllib.parse import urlencode,quote,unquote class Pagination(object): "&quo ...
- laravel 分类的列表查询
public function index(Request $request, ResponseFactoryContract $response, QuestionModel $questionMo ...