MyBatis的一个插件PageHelper,可以非常方便的进行Mybatis的分页查询。
是MyBatis从入门到精通作者刘增辉的一个开源项目。
在github上的地址为:MyBatis-PageHelper 有兴趣的可以看看源码
PageHelper的中文版文档:MyBatis-PageHelper中文版文档
1、在项目中引入分页插件
<!-- mybatis分页插件pageHelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.3</version>
</dependency>
2、在Mybatis配置xml中配置Mybatis-PageHelper插件
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 使用下面的方式配置参数,详细参数可以看中文文档-->
<property name="" value=""/>
</plugin>
</plugins>
3、在代码中使用分页插件
/*
* 在你需要进行分页的MyBatis查询方法前调用PageHelper.startPage
* 静态方法即可,紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页。
*/
第一个参数是页数,第二个参数是一页显示的数量
PageHelper.startPage(1, 3);
List<User> users = mapper.selectByExample(null);
//使用pageInfo对结果进行包装
PageInfo<User> pageInfo = new PageInfo<>(users);
查看分页执行的sql语句
先查看总记录数。再根据分页参数来查询分页数据
4、使用PageInfo来包装查询数据
PageInfo包含了丰富的分页属性
//使用pageInfo对结果进行包装
PageInfo<User> pageInfo = new PageInfo<>(users);
pageInfo.getTotal();//总记录数
pageInfo.getPageNum();//当前页
pageInfo.getPageSize();//一页显示的记录数
pageInfo.getList();//查询出来的分页数据
pageInfo.getPages();//总页数
pageInfo.isHasPreviousPage();//是否有前一页
pageInfo.isHasNextPage();//是否有后一页
5、结果展示
将PageInfo放到Model中,在前台页面就可以获取到数据。
model.addAttribute("pageInfo",pageInfo)
6、在Spring boot中使用分页插件
<!-- 在Spring boot中使用分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.7</version>
</dependency>