本文主要是介绍mybatis系列-tkmybatis-09-物理分页与逻辑分页的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Mybatis的分页操作可以分为物理分页和逻辑分页。他们之间有什么区别呢?在什么场景下使用什么样的分页呢?
1. Mybatis实现分页的方法
-
使用RowBounds对象进行逻辑(逻辑内存中)分页,它是针对ResultSet结果集执行的内存分页。
-
使用pageHelper插件进行物理分页(其实是依赖物理数据库实体)。
2. Mybatis使用pageHelper实现分页的原理
强烈推荐阅读——浅析pagehelper分页原理
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>4.1.6</version></dependency>
Pagehelper的使用
本质上两个知识点:
-
将pageNum和pageSize封装为page对象,保存在ThreadLocal中,实现线程间数据隔离。
-
Pagehelper实现了Mybatis的Interceptor接口,调用拦截StatementHandler(Sql语法的构建处理)方法,按照物理库的不同重构SQL实现分页。
插件拦截的对象:
-
Executor:拦截执行器的方法(log记录)
-
StatementHandler:sql语法构建处理
-
ParameterHandler:拦截参数的处理
-
ResultSetHandler:拦截结果集的处理
这篇关于mybatis系列-tkmybatis-09-物理分页与逻辑分页的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!