- Mybatis实现分页的方法
使用RowBounds对象进行逻辑(逻辑内存中)分页,它是针对ResultSet结果集执行的内存分页。
使用pageHelper插件进行物理分页(其实是依赖物理数据库实体)。
2. Mybatis使用pageHelper实现分页的原理
强烈推荐阅读——浅析pagehelper分页原理
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.6</version>
</dependency>
本质上两个知识点:
1, 将pageNum和pageSize封装为page对象,保存在ThreadLocal中,实现线程间数据隔离。
2, Pagehelper实现了Mybatis的Interceptor接口,调用拦截StatementHandler(Sql语法的构建处理)方法,按照物理库的不同重构SQL实现分页。
插件拦截的对象:
1,Executor:拦截执行器的方法(log记录)
2,StatementHandler:sql语法构建处理
3,ParameterHandler:拦截参数的处理
4,ResultSetHandler:拦截结果集的处理
链接:https://www.jianshu.com/p/2d6e8ff4d85a