1.
原理:拦截器。
使用方法:
RowBounds:在mapper.java中的方法中传入RowBounds对象
//接口方法 public List<Honor> getHonorList(HashMap<String, Object> maps,RowBounds rowBounds); //调用方法 RowBounds rowBounds = new RowBounds(offset, page.getPageSize()); // offset起始行 // limit是当前页显示多少条数据 RowBounds rowBounds = new RowBounds(2, 2); List<Honor> honors = studentMapper.getHonorList(maps,rowBounds);
Mybatis使用RowBounds对象进行分页,它是针对ResultSet结果集执行的内存分页,而非物理分页,可以在sql内直接书写带有物理分页的参数来完成物理分页功能,也可以使用分页插件来完成物理分页。
分页插件的基本原理是使用Mybatis提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql,根据dialect方言,添加对应的物理分页语句和物理分页参数。
举例:select * from student,拦截sql后重写为:select t.* from (select * from student)t limit 0,10
2.Mybatis的插件 PageHelper 分页查询使用方法
https://blog.csdn.net/maoyuanming0806/article/details/77720754
Mybatis的一个插件,PageHelper,非常方便mybatis分页查询。国内牛人的一个开源项目,有兴趣的可以去看源码,都有中文注释(ps:某些源码一大堆英文,痛哭流涕!)
在github上仓库地址为:Mybatis-PageHelper
它支持基本主流与常用的数据库,这可以在它的文档上看到。这里记录一下使用的基本方法
0.查看文档与使用准备
开发文档有中文文档也有英文文档
PageHelper官方文档
官方地址
https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md
Maven依赖