mysql物理分页逻辑分页_物理分页与逻辑分页的区别
物理分页与逻辑分页的区别
物理分页:物理分页就是护具看本⾝提供了分页⽅式,如MYSQL的limit、ORACLE的rownum,好处是效率⾼,不好的地⽅九江市不同的数据库有不同的搞法
逻辑分页:利⽤游标分页,好处就是素有数据库都统⼀,好处就是效率低
常⽤ORM框架采⽤的分页就是
分页查询插件hibernate:采⽤的就是物理分页
MyBatis使⽤RowBounds实现的分页是逻辑分页,也就是先把数据库记录全部查询出来,然在根据offset和limit截断记录返回(数据量⼤的时候造成内存溢出)
不过可以使⽤插件或其他⽅式能达到物理分页效果
mybatis的物理分页插件
常见的的两种mybaits-Paginator、Mybatis-PageHelper
为在数据层免上实现物理分页,⼜不改变原Mybatis的函数逻辑,可以编写plugin截获Mybatis Executor的statementhandler,重写SQL 来执⾏查询
扩展
Mybatis如何编写⼀个⾃定义插件,MyBatis四⼤对象(Executor(执⾏器) 、StatementHandler(执⾏语句集)、ParameterHanlder(参数处理器)、ResultSetHandler(结果设置处理器))进⾏拦截
Executor: 拦截内部执⾏器,它负责调⽤StatementHandler操作数据库,并把结果集通过ResultSetHandler进⾏⾃动映射,另外它还处理了⽿机缓存操作。
StatementHandler: 拦截SQL语法构建的处理,它是MyBatis直接和数据库执⾏SQL脚本的对象,另外它实也是先了Mybatis的以及缓存
ParameterHandeler:拦截参数的处理
ResultSetHandler: 拦截结果的处理
Mybatis 插件要实现Intercepotr接⼝,接⼝包含的⽅法,如下
public interface Intercepotr{
Object inercepotr(Invocation invocation) Throws Throwable;
Object plugin(Object target);
void setProperties(Properties properties);
}
setProperties ⽅法是在mybaits进⾏配置插件的时候可以配置⾃定义的相关属性,即:接⼝实现对象参数的参数配置
plugin:⽅法是插件⽤于封装⽬标对象的,通过该⽅法我们可以返回⽬标对象本⾝,也可以返回⼀个它的代理,可以决定是否要拦截进⽽决定要返回⼀个什么样的⽬标对象
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论