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:方法是插件用于封装目标对象的,通过该方法我们可以返回目标对象本身,也可以返回一个它的代理,可以决定是否要拦截进而决定要返回一个什么样的目标对象

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值