(一)添加依赖
<!-- mybatis分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.7</version>
</dependency>
(二)配置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<User> 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<User> selectAllUsers(int pageNum, int pageSize);
}
调用时检测到分页信息,就会自动调用分页
public List<User> selectAllUsers() {
return userMapper.selectAllUsers(1, 2);
}
3、第三种,将分页信息写在数据传输对象(DTO)中
如果 pageNum 和 pageSize 存在于 User 对象中,只要参数有值,也会被分页
public class User {
//下面两个参数名和 params 配置的名字一致
private Integer pageNum;
private Integer pageSize;
}