Ipage分页和PageHelper分页

news/2024/10/23 7:15:27/

分页插件

两个都用于分页,常用的应该是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进行管理。如下。否则不会进行拦截。

  @Beanpublic 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进行分页操作并返回的集合结果集,正常来说也不会这么干,就随便提一嘴)


http://www.ppmy.cn/news/656202.html

相关文章

Ubuntu把电脑上的文件传到另一台电脑上

1.在终端上输入: ifconfig 查看ip (~$sudo apt-get install openssh-server如果不过拷贝不成功,就在这里加这句话) 2.把shaolin电脑上的文件考到feiniu电脑上: ~$ scp /home/shaolin/AndroidStudioProjects/MyApplication.zip feiniu192.168.1.108:/home/feiniu/luchangyin …

使用PageHelper.startPage放置位置

使用PageHelper.startPage放置位置 PageHelper.startPage(pageNum, pageSize); 相当于开启分页,通过拦截MySQL的方式,把查询语句拦截下来添加limit,所以一定要放在查询语句的前面,否则不生效(自己犯的错误记录一下) 记录一次错误&#xff0c;傻眼了还在那算 service写法&#…

电脑Tab键有什么功能?分享Tab键的6个妙用

Tab键tabulator key 的缩写&#xff0c;意思是跳格键。基本用法是可以用来绘制无边框的表格&#xff0c;还可以在单词间留下间隔&#xff0c;一般等于八个空格的长度。但是您知道电脑Tab键有什么功能吗&#xff1f;以下一些关于Tab键的使用和功能的介绍&#xff0c;希望这些可以…

用计算机如何编辑文档,电脑中怎样使用Pages编辑文本

Pages是苹果系统原生的工具&#xff0c;功能十分强大&#xff0c;一直深受广大用户们的喜爱。那么&#xff0c;电脑中怎样使用Pages编辑文本&#xff1f;接下来&#xff0c;系统城小编就给大家详细介绍一下电脑中使用Pages编辑文本的具体步骤。 具体如下: win8.1 - 14 、首先&a…

PageHelper使用以及PageInfo中分页对象的转化

在使用Mybatis查询数据库展示到前端的过程中不可避免的要考虑到分页问题&#xff0c;这时就引入了Mybatis的PageHelper插件&#xff0c;这个插件对分页功能进行了强有力的封装&#xff0c;只需要将查询出来的数据List集合放入到它指定的对象中&#xff0c;就完成了分页&#xf…

ubuntu下如何设置PageUp/PageDown键调出使用过的历史命令

vi /etc/inputrc 大约在第40行&#xff0c;找到page up page down的用法&#xff0c;去掉前面的#号&#xff0c;重启终端即可 40 # alternate mappings for "page up" and "page down" to search the history 41 "\e[5~": history-search-ba…

PageHelper是怎么分页的

目录 1、前言2、基本流程3、源码分析3.1、存储分页参数3.2、改造SQL3.3、分页查询3.4、使用 Page 创建 PageInfo 对象 1、前言 PageHelper是mybatis 提供的分页插件&#xff0c;通过PageHelper.startPage(pageNo,pageLimit)就可以帮我们实现分页&#xff0c;目前支持Oracle,My…

pagehelper分页插件传pageNum和pageSize不起作用怎么办?

项目场景&#xff1a; 在二次开发中要使用到多数据源这种情况&#xff0c;但是原有的分页只适用于以前的方式&#xff08;之前是ORACLE&#xff09;现在要用到的是mysql的分页这种方式 问题描述 按照往上pagehelper的使用教程&#xff0c;我在自己的项目中导入了pagehelper的…