MyBatis 是如何进行分页的?分页插件的原理是什么?
MyBatis 是如何分页的?
MyBatis 使用 RowBounds 对象进行分页,它是针对 ResultSet 结果集执行的内存分页,而非物理分页。可以在 sql 内直接书写带有物理分页的参数来完成物理分页功能,也可以使用分页插件来完成物理分页。
分页插件的原理是什么?
- 分页插件的基本原理是使用 Mybatis 提供的插件接口,实现自定义插件,拦截 Executor 的 query 方法
- 在执行查询的时候,拦截待执行的 sql,然后重写 sql,根据 dialect 方言,添加对应的物理分页语句和物理分页参数。
- 举例:
select * from student
,拦截 sql 后重写为:select t.* from (select * from student) t limit 0, 10
可以看一下一个大概的 MyBatis 通用分页拦截器:

THE END
暂无评论内容