美文网首页spring bootMysql
mybatis小知识-逻辑分页和物理分页

mybatis小知识-逻辑分页和物理分页

作者: 小胖学编程 | 来源:发表于2019-04-27 08:18 被阅读300次

    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的使用

    本质上两个知识点:

    1. 将pageNum和pageSize封装为page对象,保存在ThreadLocal中,实现线程间数据隔离。
    2. Pagehelper实现了Mybatis的Interceptor接口,调用拦截StatementHandler(Sql语法的构建处理)方法,按照物理库的不同重构SQL实现分页。

    插件拦截的对象:

    1. Executor:拦截执行器的方法(log记录)
    2. StatementHandler:sql语法构建处理
    3. ParameterHandler:拦截参数的处理
    4. ResultSetHandler:拦截结果集的处理

    相关文章

      网友评论

        本文标题:mybatis小知识-逻辑分页和物理分页

        本文链接:https://www.haomeiwen.com/subject/tesygqtx.html