1、依赖
maven依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
2、API
比较关键的三个类是:PageHelper(开启分页)、PageInfo(封装分页)、PageResult(解析分页结果)
//开启分页
PageHelper.startPage;
//清除ThreadLocal中存储的分页参数
//这个插件里用了ThreadLocal以保障线程安全,每个线程的分页参数存储在ThreadLocal里,不用了要清除。。。
//这块儿想了解的话建议看看下面的API,页面内搜索:不安全的分页
PageHelper.clearPage;
......
API讲解,很详细,就是篇幅比较长。
3、使用方式
一个标准的查询
public PageResult<Map<String,String>> getInfo(ExamplePo examplePo) {
//开启分页
PageHelper.startPage(examplePo.getPageNo(), examplePo.getPageSize(), "");
//其实生成了两个sql:一个查数据总数,一个查数据
List<Map<String,String>> list = exampMapper.getExampleInfo(examplePo);
//info的total就是数据总数
PageInfo<Map<String,String>> info = new PageInfo<>(list);
//解析分页结果
return new PageResult<Map<String,String>>(info.getTotal(), lists);
}
4、注意事项
1、在集合查询前使用
PageHelper.startPage(pageNum,pageSize),并且 中间不能穿插执行其他SQL;2、需要将你的查询语句放到 PageHelper.startPage 的后面执行,这样才能用到拦截功能;
3、PageResult的第一个参数是PageInfo的总数,不能用list.size()。
5、Tips
1、startPage相当于开启分页,通过拦截MySQL的方式, 把你的查询语句拦截下来加limit,也就是说,它不是对查询出来的结果进行处理,而是在查询之前修改了sql,添加了limit、排序等;
2、pagehelper会根据配置生成两个sql并执行:第一遍是count(0),查出总条数;第二遍使用设置的参数分页查询出pageSize条数据。