一、引入分页依赖
PageHelper github :https://github.com/pagehelper/Mybatis-PageHelper/blob/master/README_zh.md
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.8</version>
</dependency>
<!--springboot pagehelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
二、配置方言参数
yml文件中配置方式
#分页插件
#reasonable 分页合理化参数,默认值为false。当该参数设置为 true 时,pageNum<=0 时会查询第一页, pageNum>pages(超过总数时),会查询最后一页
#supportMethodsArguments 支持通过 Mapper 接口参数来传递分页参数
pagehelper:
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
三、项目中具体使用
api代码
@PostMapping(value = "studentPage")
public PageInfo<Student> Helper(Integer pageNum,Integer pageSize ){
PageInfo pageInfo = studentService.listForPage(pageNum,pageSize);
return pageInfo;
}
service代码
public PageInfo listForPage(Integer pageNum,Integer pageSize){
// 设定当前页码,以及当前页显示的条数
PageHelper.startPage(pageNum, pageSize);
//PageHelper.offsetPage(pageNum, pageSize);也可以使用此方式进行设置
List<Student> list = studentMapper.selectList();
PageInfo<Student> pageInfo = new PageInfo<Student>(list);
return pageInfo;
}
或者
public PageInfo listForPage(Integer pageNum,Integer pageSize){
PageInfo<Student> pageInfo = PageHelper.startPage(1, 10).doSelectPageInfo(() -> studentMapper.selectList());
return pageInfo;
}
四、注意
5.0.4版本后支持使用手写的 count 查询
例如,如果存在下面两个查询:
<select id="selectLeftjoin" resultType="com.github.pagehelper.model.User">
select a.id,b.name,a.py from user a
left join user b on a.id = b.id
order by a.id
</select>
<select id="selectLeftjoin_COUNT" resultType="Long">
select count(distinct a.id) from user a
left join user b on a.id = b.id
</select>
上面的 countSuffix
使用的默认值 _COUNT
,分页插件会自动获取到 selectLeftjoin_COUNT
查询,这个查询需要自己保证结果数正确。
返回值的类型必须是resultType="Long"
,入参使用的和 selectLeftjoin
查询相同的参数,所以在 SQL 中要按照 selectLeftjoin
的入参来使用。
因为 selectLeftjoin_COUNT
方法是自动调用的,所以不需要在接口提供相应的方法,如果需要单独调用,也可以提供。
详情查看5.0.4更新日志描述:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/Changelog.md
PageHelper.startPage(pageNum, pageSize);要紧跟 select