两个都用于分页,常用的应该是PageHelper了,理解了一下源码后发现IPage比PageHelper好用。
    使用方法是  PageHelper.startPage()然后后边写sql就可以。 紧接着的一个sql起作用。
               IPage则需要在dao层传入IPage的实现类Page对象,该对象实现了IPage。
区别:
    PageHelper内部原理是将传入的页码和条数赋值给了Page对象,保存到了一个本地线程ThreadLoacl中,然后会进入Mybatis的拦截器中。
    然后再拦截器中获取本地线程中保存的分页的参数。最后再将这写分页参数和原本的sql以及内部定义好的sql进行拼接完成sql的分页处理。
    中间会进行判断该sql 的类型是查询还是修改操作。如果是查询才会进入分页的逻辑并判断封装好的Page对象是否是null,null则不分页,否则分页。

IPage内部原理也是基于拦截器,但是这个拦截的是方法以及方法中的参数,这个也会判断是否是查询操作。如果是查询操作,才会进入分页的处理逻辑。
    进入分页逻辑处理后,拦截器会通过反射获取该方法的参数进行判断是否存在IPage对象的实现类。如果不存在则不进行分页,存在则将该参数赋值给IPage对象。
    然后进行拼接sql的处理完成分页操作。
    但是使用IPage需要注入一个bean拦截器交给spring进行管理。如下。否则不会进行拦截。
      @Bean
      public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
      }
      pom:  springboot使用的是2.1.0
        <dependency>
          <groupId>com.baomidou</groupId>
          <artifactId>mybatis-plus-boot-starter</artifactId>
          <version>${mybatisplus.version}</version><!-- 3.2.0 -->
          <exclusions>
            <exclusion>
              <groupId>com.baomidou</groupId>
              <artifactId>mybatis-plus-generator</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
      
IPage的好处:
    适用于多方言的数据库类型;例如 MySQL、Oracle、SqlServer等。

注意:如果两个一起用对同一个sql进行分页,内部会先执行IPage的拦截器并进行分页  然后会进入的PageHelper的分页处理。
优先使用的是IPage并且PageHelper会出现问题(不论谁前谁后)。返回Page是没问题的,但是如果返回集合的结果集使用PageInfo进行分页就会出现问题。PageHelper只会有指定条数的数据。
所以只能使用一个,如果两个一起使用,则使用IPage返回Page接收。不可以使用PageInfo进行分页数据。(当然这个的前提也是对同一个sql进行分页操作并返回的集合结果集,正常来说也不会这么干,就随便提一嘴)

MyBatis-Plus分页插件——PageHelper和IPage原理介绍相关推荐

  1. SpringBoot集成MyBatis的分页插件PageHelper

    [写在前面] 项目的后台管理系统需要展示所有资源信息,select * 虽然方便但数据量过于庞大会严重降低查找效率,页面加载慢,用户体验差.分页自然是必要选择,但原生的方法过于繁杂.MyBatis的分 ...

  2. SpringBoot集成MyBatis的分页插件PageHelper(回头草)

    俗话说:好?不吃回头草,但是在这里我建议不管你是好马还是不好马,都来吃吃,带你复习一下分页插件PageHelper. 昨天给各位总结了本人学习springboot整合mybatis第一阶段的一些学习心 ...

  3. Java 逻辑分页 和 物理分页(mybatis的分页插件PageHelper)

    目录 1 逻辑分页和物理分页的区别 2 项目框架展示 2.1 相关技术 2.2 相关依赖和配置 2.2.1 pom依赖 2.2.2 yml配置 2.3 实体类 3 逻辑分页 3.1 Sevice层 3 ...

  4. Spring Boot系列教程八: Mybatis使用分页插件PageHelper

    一.前言 上篇博客中介绍了spring boot集成mybatis的方法,基于上篇文章这里主要介绍如何使用分页插件PageHelper.在MyBatis中提供了拦截器接口,我们可以使用PageHelp ...

  5. 学习Spring Boot:(八)Mybatis使用分页插件PageHelper

    首先Mybqtis可以通过SQL 的方式实现分页很简单,只要在查询SQL 后面加上limit #{currIndex} , #{pageSize}就可以了. 本文主要介绍使用拦截器的方式实现分页. 实 ...

  6. Spring Boot系列六 Spring boot集成mybatis、分页插件pagehelper

    1. 概述 本文的内容包括如下内容: Spring Boot集成mybatis Spring Boot集成pagehelper分页插件,定义分页的相关类 实现工具类:model转dto,实现数据层和传 ...

  7. 【MyBatis】分页插件pageHelper的简单使用

    pageHelper就是mybatis拦截器的一个应用,实现分页查询,支持常见的 12 种数据库的物理分页并支持多种分页方式. 使用PageHelper的好处是在实际项目开发中更方便. 原因是:在项目 ...

  8. MyBatis使用分页插件pagehelper,遇到 IndexOutOfBoundsException: Index: 0, Size: 0] with root cause解决方法

    在不使用条件查询的时候内容会完整的查询出来 pagehelper在使用的时候它首先会通过你给的条件内容先去数据库查询出来有多少条记录 然后在通过你自己写SQL语句查询分页的内容 假如我的SQL语句是: ...

  9. hql分页获取数据总数_最简洁的分页插件PageHelper

    最简洁的分页插件PageHelper 简介 大部分后台管理项目,用的最多的展现方式是列表显示,所以我把列表查询中的分页插件拿出来写一下,方便以后写代码的时候直接复制粘贴.在我们最熟悉的springbo ...

最新文章

  1. Aspose.cell生成表格
  2. 21个ui设计技巧,让你的设计不落伍
  3. C++从0到1的入门级教学(十三)——继承
  4. java参数注解pam_吃透Java基础十:注解
  5. C#中一些日期的相关操作
  6. 关于jquery跨域请求方法
  7. html表格宽度设置相同,我如何使HTML表格的宽度与其包含的div标签相同?
  8. java fx能不能添加到swing中_java写个记事本
  9. python 移动平均法_移动平均法详解
  10. Unity修改编辑器
  11. 磊科路由器信号按键_怎样隐藏磊科路由器WiFi信号
  12. 【开源】思源笔记自动备份
  13. mathmatica使用入门
  14. Git操作 fatal: bad numeric config value ‘“false”‘ for ‘http.sslverify‘: invalid unit错误
  15. 软件设计师-设计模式
  16. 微服务学习——微服务框架
  17. 34. 实战:基于某api实现歌曲检索与下载(附完整源代码)
  18. kali 2021安装w3af
  19. tp部署了admin.php如何显示页面,深度解析ThinkPHP5设置模板路径
  20. java毕业设计大学生学习交友平台Mybatis+系统+数据库+调试部署

热门文章

  1. 面试被问到微信钉钉的群人数为什么要设上限,懵了。。
  2. 基于JAVA宠物爱心救助系统计算机毕业设计源码+系统+lw文档+部署
  3. PLC编程控制系统的软件怎么设计
  4. 学校AI视频行为分析监测系统 opencv
  5. 携程滑块,点选文字识别
  6. js计算日期之间天数
  7. 【本科版】《漫漫邮子路(三)--我的校科协主席之路--孙放》
  8. IBM实习日记——4.3
  9. Froggy Ford Gym - 100851F
  10. 浅谈汽车零部件行业迈进智能制造领域