我是靠谱客的博主 无情期待,最近开发中收集的这篇文章主要介绍MyBatis-Plus分页——PageHelper和IPage介绍,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

两个都用于分页,常用的应该是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等。 

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

最后

以上就是无情期待为你收集整理的MyBatis-Plus分页——PageHelper和IPage介绍的全部内容,希望文章能够帮你解决MyBatis-Plus分页——PageHelper和IPage介绍所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部