Pagehelper插件的知识点大致可以分为三个部分

  1. 搭建环境,引入jar包,配置。
  2. 使用方式,只需要记住一种即可。类似于在写SQL语句中,可以left join,也可以right join,它们实现的功能是相同的,习惯使用一种即可。
  3. 参数,在使用参数之前,首先需要了解使用方式,因为某些参数只有在特定的使用方式下才有意义。

1、配置

  在配置之前首先需要引入jar包,在pom文件中添加

<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>最新版本</version>
</dependency>

  我使用的版本是5.1.4

  配置插件的方式有两种,在mybatis-config中的plugins标签中配置,在spring,或者是springboot中将pageInteceptor类注入,并与SqlSessionFactoryBean相关联。

1.1  Mybatis配置文件

  在Mybatis-config.xml中配置plugins标签,配置如下:

<!-- 配置插件 -->
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<property name="" value="">
</plugin>
</plugins>

  此时需要注意plugins标签的顺序。

1.2  Spring 

<!-- 注入pageInterceptor对象 -->
<bean id="pagehelper" class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<!--使用下面的方式配置参数,一行配置一个 -->
<value>
params=value1
</value>
</property>
</bean> <!-- 与sqlSessionFactory对象绑定 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 对应类中的 Interceptor[] plugins 属性 -->
<property name="plugins">
<array>
<bean ref="pagehelper">
</array>
</property>
</bean>

  Springboot也需要经历这两个步骤,只不过通过代码形式,首先使用@Bean注解将PageInterceptor对象注入,之后注入SqlSessionFactoryBean对象,并设置它的plugins属性

2、使用方式

  在官网上定义了6种使用方式,它们实现的功能是相同的,实现方式是不同的,习惯使用一种即可,我比较习惯使用PageHelper.startPage的方式。

  原著中提到的六种使用方式如下:

  1. 使用RowBound对象的方式。
  2. 使用PageHelper.startPage的方式
  3. 使用PageHelper.offsetPage的方式
  4. 在Mapper接口中添加分页参数的方式
  5. 在Mapper接口中添加对象的方式,对象封装了分页的信息
  6. 会用ISelect接口的方式。

2.1   RowBound

  RowBound对象封装了分页信息,第一个参数表示从结果集的第几条数据开始,第二个参数表示数据返回的条数。

  当使用此方式时,

  可以设置rowBoundsWithCount参数,它的值为true时,会在分页查询之前执行一条count查询。它的默认值为false

  可以设置offsetAsPageNum参数,它的含义是将第一个参数的含义从offset改变为pageNum。

2.2   startPage方法

  调用PageHelper.startPage方法,它的第一个参数为pageNum,它的第二个参数为pageSize,它是最常用的一种方式,在使用时需要注意查询方法必须紧跟在startPage方法之后。

  当使用此方式时,

  可以设置reasonable参数,它的意义是保证pageNum和pageSize的合理性。默认值为false。

  可以设置pageSizeZero参数,值为true时,如果pageSize参数值为0时,会查询所有的结果。

2.3 offSet方法

  调用PageHelper.offset方法,它的第一个参数为offset,它的第二个参数为limit,参数的含义与RowBound对象的参数含义相同。

在使用时需要注意查询方法必须紧跟在offset方法之后。

2.4   分页参数的方式

  在Mapper的查询方法上添加分页信息,例如pageNum,pageSize。

  当使用此方法时,

  可以设置supportMethodsArguments参数,它的值为true时,会从查询方法中获取分页参数,它的默认值为false

  可以设置params参数,它是建立分页参数与查询方法参数名称之间的映射关系,默认情况下查询方法上添加pageNum,pageSize参数时,会转换为对应的分页参数,如果方法上的参数名称不是pageNum,例如pageNumber时,此时无法识别该参数,需要建立映射

pageNumber=pageNum

2.5   对象的方式

  与分页参数的方式基本相同,区别在于是将分页参数封装为对象,并将对象传入查询方法。

2.6  ISelect接口方式

Page<Object> page = PageHelper.startPage(pageNum, pageSize).doSelectPage(()-> userMapper.selectMethod());

  需要JDK版本为1.8以上,否则以匿名内部类方式会比较麻烦。

3、其他参数

  其他参数使用默认值即可。

  1. helperDialect:数据库方言,区分数据库的类型,分页插件会自动检测。
  2. closeConn:在执行完SQL语句之后,是否自动关闭获取的连接,默认为true。
  3. aggregateFunctions:在执行查询语句之前,会执行一次count语句(聚合函数),值为聚合函数的名称,方法中的参数为列名。使用默认的count(*)即可。
  4. autoRuntimeDialect:默认值为 false。设置为 true 时,允许在运行时根据多数据源自动识别对应方言的分页。

4、注意事项

  参考官网的重要提示

后端——框架——持久层框架——Mybatis——补充——pageHelper(分页)插件的更多相关文章

  1. SpringBoot+Mybatis配置Pagehelper分页插件实现自动分页

    SpringBoot+Mybatis配置Pagehelper分页插件实现自动分页 **SpringBoot+Mybatis使用Pagehelper分页插件自动分页,非常好用,不用在自己去计算和组装了. ...

  2. Mybatis的PageHelper分页插件的PageInfo的属性参数,成员变量的解释,以及页面模板

    作者:个人微信公众号:程序猿的月光宝盒 //当前页 private int pageNum; //每页的数量 private int pageSize; //当前页的数量 private int si ...

  3. Springboot 系列(十二)使用 Mybatis 集成 pagehelper 分页插件和 mapper 插件

    前言 在 Springboot 系列文章第十一篇里(使用 Mybatis(自动生成插件) 访问数据库),实验了 Springboot 结合 Mybatis 以及 Mybatis-generator 生 ...

  4. 【spring boot】14.spring boot集成mybatis,注解方式OR映射文件方式AND pagehelper分页插件【Mybatis】pagehelper分页插件分页查询无效解决方法

    spring boot集成mybatis,集成使用mybatis拖沓了好久,今天终于可以补起来了. 本篇源码中,同时使用了Spring data JPA 和 Mybatis两种方式. 在使用的过程中一 ...

  5. Spring Boot整合tk.mybatis及pageHelper分页插件及mybatis逆向工程

    Spring Boot整合druid数据源 1)引入依赖 <dependency> <groupId>com.alibaba</groupId> <artif ...

  6. 后端——框架——持久层框架——Mybatis——《Mybatis从入门到精通》读书笔记——初篇

    1.Mybatis知识点 框架的知识点大致可以分为三个部分 基础: 介绍编写增,删,改,查: 动态标签: config配置文件 Mapper配置文件 插件:常见的插件有三个 pageHelper:分页 ...

  7. springboot如何集成mybatis的pagehelper分页插件

    mybatis提供了一个非常好用的分页插件,之前集成的时候需要配置mybatis-config.xml的方式,今天我们来看下它是如何集成springboot来更好的服务的. 只能说springboot ...

  8. 小白的springboot之路(十五)、mybatis的PageHelper分页插件使用

    0.前言 用mybatis,那么分页必不可少,基本都是用PageHelper这个分页插件,好用方便: 1.实现 1.1.添加依赖: <!-- 3.集成 mybatis pagehelper--& ...

  9. Mybatis学习 PageHelper分页插件

    1.Maven依赖,注意使用PageHelper时的版本必须与Mybatis版本对应 1 <!-- 添加Mybatis依赖 --> 2 <dependency> 3 <g ...

随机推荐

  1. Tomcat目录说明

    apache-tomcat-x.x.xx bin:保存启动与监控Tomcat的命令文件的文件夹 conf:保存Tomcat配置文件的文件夹,如servlet.xml为服务器的主配置文件,web.xml ...

  2. webpack 打包增加版本信息

    What do we need? 笔者目的是在vue项目打包后的 dist/index.html 文件中写入本次打包git用户.最后一次git提交信息,这样做的目的是便于线上项目的管理和防止同事之间的 ...

  3. vue 实现上一周、下一周切换功能

    效果图: html 显示部分: js 显示部分: preNextBtn(val){ let _this = this; this.tableList = []; //数据重置为空 _this.show ...

  4. 线段树+扫描线 NAIPC 2019 Intersecting Rectangles

    你看看你有多菜,一点线段树的小小的运用,就不会写了: 题意:如果矩阵有交集,输出1,否则输出0(不包含内嵌): 思路:本题求交集,还得不包括内嵌的情况: 做过一道是求面积的题.跟这道类似,但在这里定义 ...

  5. Nuxt配置动态路由以及参数校验

    动态路由就是带参数的路由.比如我们商品列表里很多商品详细页,这时候就需要动态路由的帮助了. 比如我们新建一个commodity文件夹,新建一个index.vue 文件,然后新建一个_id.vue (以 ...

  6. 并发编程Semaphore详解

    Semaphore的作用:限制线程并发的数量 位于 java.util.concurrent 下, 构造方法 // 构造函数 代表同一时间,最多允许permits执行acquire() 和releas ...

  7. Python 多任务(进程) day1(1)

    进程和程序的关系: 通俗来讲程序是死的不变的,进程是活的改变的.一个程序在没运行之前是程序,运行之后是进程 程序是一种电脑能识别的2进制代码,当你一直运行程序的时候,会出现多个进程(相当于菜谱和菜,照 ...

  8. C#类和对象的理解

    C#是面向对象的开发语言 类:抽象的(模板)不占用内存空间 对象:具体的(真实存在事物)占用内存空间

  9. logstash output到kafka记录与总结( No entry found for connection 2)

    简述 本文记录logstash的output配置为kafka的过程.这里是简单的例子,输入为stdin,本文主要目的是为了记录在这次配置过程中遇到的问题和解决的过程及总结. 关于kafka集群的搭建可 ...

  10. Spring Cloud Alibaba 实战 之 Nacos 服务注册和发现

    服务注册与发现,服务发现主要用于实现各个微服务实例的自动化注册与发现,是微服务治理的核心,学习 Spring Cloud Alibaba,首先要了解框架中的服务注册和发现组件——Nacos. 一.Sp ...