十八、Spring boot中Mybatis整合分页插件PageHelper

注意:PageHelper分页插件的起始下标是1,如果起始页面设置为0,那么返回的结果将和下标是1的重复!!!!

(一)添加依赖


		
			com.github.pagehelper
			pagehelper-spring-boot-starter
			1.2.7
		

(二)配置PageHelper

pagehelper:
  #offset作为PageNum使用
  offset-as-page-num: true
 
  #RowBounds方式是否做count查询
  row-bounds-with-count: true
  
  #分页合理化,true开启,如果分页参数不合理会自动修正。默认false不启用(当该参数设置为 true 时,
  #pageNum<=0 时会查询第一页pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据
  #参数进行查询。)
  reasonable: true

#pageSizeZero   //当设置为true的时候,如果pagesize设置为0(或RowBounds的limit=0),就不执行分页

#params:用于从对象中根据属性名取值, 可以配置 #pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值, 默认值为#pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZe#ro=pageSizeZero

#supportMethodsArguments:默认值false,分页插件会从查询方法的参数值中,自动根据上面 #params 配置的字段中取值,查找到合适的值时就会自动分页。

(三)使用方法
1、第一种,Mapper接口方式的调用,推荐这种使用方式。

public List selectAllUsers() {
		//1是当前页数,2是页面记录数(第1页,2条数据)
        PageHelper.startPage(1, 2);
        return userMapper.selectAllUsers();
    }

2、第二种,配置了supportMethodsArguments=true和params

params: pageNum=pageNum;pageSize=pageSize
support-methods-arguments: true

直接将分页信息写在dao层接口中

public interface UserMapper {
    List selectAllUsers(int pageNum, int pageSize);
}

调用时检测到分页信息,就会自动调用分页

public List selectAllUsers() {
        return userMapper.selectAllUsers(1, 2);
    }

3、第三种,将分页信息写在数据传输对象(DTO)中
如果 pageNum 和 pageSize 存在于 User 对象中,只要参数有值,也会被分页

public class User {
    //下面两个参数名和 params 配置的名字一致
    private Integer pageNum;
    private Integer pageSize;
}

(四)问题

1.PageHelper查询返回重复数据?

  对查询结果采用记录中永不重复的字段作为排序条件,比如主键ID,这样查询出的分页结果是OK的,不重复的.

你可能感兴趣的:(Spring,Boot,从入门到放弃)