MyBatis-Plus缩略图——PageHelper和IPage评价转载

原创
小哥 3年前 (2022-10-28) 阅读数 7 #大杂烩

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

com.baomidou mybatis-plus-boot-starter ${mybatisplus.version} com.baomidou mybatis-plus-generator

IPage的好处: 用于多种方言的数据库类型;例如 MySQL、Oracle、SqlServer等。

注意:如果两者一起使用,则将首先执行内部。IPage拦截器和寻呼。 然后将进入的PageHelper分页处理。 首选用途是IPage并且PageHelper会有问题的(不管是在谁之前还是之后)。返回Page没问题, 但如果使用返回集合的结果集。PageInfo进行分页就会有问题的。PageHelper将只有指定号码的数据。 因此,如果两者一起使用,则只能使用其中一个。IPage返回Page收到。尚未使用PageInfo来接收数据。 (当然,这样做的前提也是一样的sql分页和返回收集结果集)

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除