pagehelper分页用法
pagehelper分页用法
PageHelper是一个为了方便开发人员进行分页查询而提供的一个分页插件,它是在MyBatis的基础上进行封装的。PageHelper可以用于任何Java项目,不仅仅局限于MyBatis。PageHelper以其简单易用、功能强大的特点受到广大开发人员的喜爱。
PageHelper的使用非常简单,使用以下几个步骤即可实现分页查询。
1. 引入PageHelper依赖:
在Maven项目的pom.xml文件中加入以下依赖:
```
```
2. 配置PageHelper:
在Spring Boot项目的配置文件application.properties中加入以下配置:
```
# 分页插件配置
pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
pagehelper.params=count=countSql
```
3. 查询数据并进行分页:
```java // 在需要分页查询的方法中加入以下代码
PageHelper.startPage(pageNum, pageSize);
List
```
在查询方法前调用PageHelper.startPage()方法指定当前页码和每页显示数量。然后调用自定义的查询方法返回查询结果。PageHelper会自动根据startPage()方法指定的参数进行分页处理。
4. 返回分页结果:
PageHelper会返回一个PageInfo对象,其中包含了分页信息和查询结果。
```java
PageInfo
long total = pageInfo.getTotal(); // 获取总记录数
int pages = pageInfo.getPages(); // 获取总页数
List
```
通过PageInfo对象可以获取到总记录数、总页数和当前页的数据,可以根据需要进行展示或其他操作。
PageHelper还提供了一些其他的功能,比如排序、合并插件等,可以根据实际需求进行配置和使用。
PageHelper是一个非常方便的分页插件,通过简单的配置和使用,可以轻松实现分页查询功能,大大简化了开发人员的工作。无论是在传统的Java项目中还是在Spring Boot项目中,都可以很方便地使用PageHelper进行分页查询。
分页插件PageHelper配置步骤(mybatis)
分页插件PageHelper配置步骤(mybatis)
原理:
mybatis执⾏sql步骤:
通过sqlsessionFactory sqlsession Exector (执⾏器对象)mappedstatement(sql语句封装)
在执⾏mappedstatement前在sql语句上加上limit即可实现分页
步骤:
⼀、引⼊pageHelper的jar包
⼆、在mybatis的xml⽂件中配置分页插件
这⾥的com.github.pagehelper.PageHelper使⽤完整的类路径。
其他五个参数说明:
1. 增加dialect属性,使⽤时必须指定该属性,可选值为oracle,mysql,mariadb,sqlite,hsqldb,postgresql,没有默认值,必须指定该属性。
2. 增加offsetAsPageNum属性,默认值为false,使⽤默认值时不需要增加该配置,需要设为true时,需要配置该参数。当该参数设置
为true时,使⽤RowBounds分页时,会将offset参数当成pageNum使⽤,可以⽤页码和页⾯⼤⼩两个参数进⾏分页。
3. 增加rowBoundsWithCount属性,默认值为false,使⽤默认值时不需要增加该配置,需要设为true时,需要配置该参数。当该参数设置
为true时,使⽤RowBounds分页会进⾏count查询。
4. 增加pageSizeZero属性,默认值为false,使⽤默认值时不需要增加该配置,需要设为true时,需要配置该参数。当该参数设置
为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果(相当于没有执⾏分页查询,但是返回结果仍然是Page类
型)。
5. 增加reasonable属性,默认值为false,使⽤默认值时不需要增加该配置,需要设为true时,需要配置该参数。具体作⽤请看上⾯配置
Mybatis分页插件:pageHelper的使用及其原理解析
Mybatis分页插件:pageHelper的使⽤及其原理解析
在实际⼯作中,很进⾏列表查询的场景,我们往往都需要做两个步骤:1. 查询所需页数对应数据;2. 统计符合条件的数据总数;⽽这,⼜会导致我们必
然⾄少要写2个sql进⾏操作。这⽆形中增加了我们的⼯作量,另外,当发⽣需要变动时,我们⼜需要同时改动这两个sql,否则必然导致结果的不⼀致。
因此,我们需要⼀个简单易⽤的分页⼯具来帮我们完成这个⼯作了,需求明确,⾄于如何实现则各有千秋。⽽我们要说的 pageHelper则是这其中实现⽐
较好的⼀件的组件了,我们就⼀起来看看如何使⽤它进⾏提升⼯作效率吧!
1. pageHelper 的依赖引⼊
pom.xml 中引⼊pageHelper依赖:
1. 如果是springboot, 则可以直接引⼊ pagehelper-spring-boot-starter, 它会帮我们省去许多不必要的配置。
com.github.pagehelper
pagehelper-spring-boot-starter
1.2.12
2. 如果是普通的springmvc 类的项⽬,则引⼊ pageHelper 即可。
com.github.pagehelper
pagehelper
5.1.10
2. pagehelper插件配置
1. 如果是springboot,则直接配置⼏个配置项即可:
# mybatis 相关配置
mybatis:
#... 其他配置信息
configuration-properties:
offsetAsPageNum: true
rowBoundsWithCount: true
reasonable: true
mapper-locations: mybatis/mapper/*.xml
简单回顾看下db配置:
# db 配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
pagehelper 的doselectpage方法
pagehelper 的doselectpage方法
PageHelper的doSelectPage方法是PageHelper插件中的一个核心方法,用于实现数据库分页查询功能。该方法的作用是根据传入的参数进行查询,并返回查询结果的分页数据。
doSelectPage方法的主要参数包括pageNum、pageSize和count参数。pageNum参数表示当前页码,表示要查询的页数;pageSize参数表示每页显示的记录条数;count参数表示是否查询总记录数。在使用doSelectPage方法时,还需要在方法调用之前使用PageHelper.startPage方法设置相关的分页参数。
使用doSelectPage方法进行分页查询非常简单。首先,在代码中引入PageHelper插件的依赖,并通过引入的类进行startPage方法的初始化设置。然后,在执行查询的方法中调用doSelectPage方法,并传入相关的查询条件和分页参数。最后,通过使用doSelectPage方法返回的Page对象获取查询结果的分页数据。
doSelectPage方法返回的Page对象包含了查询结果的分页数据,比如当前页数据、总记录数、总页数等信息。可以通过Page对象提供的方法来获取这些数据,并在前端页面进行展示。
PageHelper的doSelectPage方法是开发中常用的一个方法,可以极大地简化数据库分页查询的实现过程。通过合理使用该方法,可以有效提高查询效率,提升用户体验。
Mybatis分页插件PageHelper简单使用
Mybatis分页插件PageHelper简单使⽤
1. 引⼊分页插件
引⼊分页插件有下⾯2种⽅式,推荐使⽤ Maven ⽅式。
1). 引⼊ Jar 包
你可以从下⾯的地址中下载最新版本的 jar 包
由于使⽤了sql 解析⼯具,你还需要下载 jsqlparser.jar:
2). 使⽤ Maven
在 pom.xml 中添加如下依赖:
com.github.pagehelper
pagehelper
最新版本
最新版本号可以从⾸页查看。
2. 配置拦截器插件
特别注意,新版拦截器是 com.github.pagehelper.PageInterceptor。 com.github.pagehelper.PageHelper 现在是⼀个特殊的 dialect 实现类,是分页插件的默认实现
类,提供了和以前相同的⽤法。
2. 在 Spring 配置⽂件中配置拦截器插件
使⽤ spring 的属性配置⽅式,可以使⽤ plugins 属性像下⾯这样配置:
params=value1
3. 分页插件参数介绍
分页插件提供了多个可选参数,这些参数使⽤时,按照上⾯两种配置⽅式中的⽰例配置即可。分页插件可选参数如下:
dialect:默认情况下会使⽤ PageHelper ⽅式进⾏分页,如果想要实现⾃⼰的分页逻辑,可以实现 Dialect(com.github.pagehelper.Dialect) 接⼝,然后配置该属性
为实现类的全限定名称。
下⾯⼏个参数都是针对默认 dialect 情况下的参数。使⽤⾃定义 dialect 实现时,下⾯的参数没有任何作⽤。
1. helperDialect:分页插件会⾃动检测当前的数据库链接,⾃动选择合适的分页⽅式。 你可以配置helperDialect属性来指定分页插件使⽤哪种⽅⾔。配置时,可以
使⽤下⾯的缩写值:
oracle,mysql,mariadb,sqlite,hsqldb,postgresql,db2,sqlserver,informix,h2,sqlserver2012,derby
SpringBoot整合PageHelper实现分页查询功能详解
SpringBoot整合PageHelper实现分页查询功能详解
前⾔
本⽂介绍的是MyBatis 分页插件 PageHelper,如果你也在⽤ MyBatis,建议尝试该分页插件,这⼀定是最⽅便使⽤的分页插件。分页插件⽀持任何复杂的单表、多表分页。
使⽤⽅法
导⼊依赖
在中央仓库中搜索 pageHelper,找到 pagehelper-spring-boot-starter
可以⾃选版本,选择你所使⽤的依赖管理⼯具对应的依赖坐标,例如我⽤的依赖管理⼯具是Maven,那我就选择对应Maven的依赖坐标。
添加pagehelper-spring-boot-starter的Maven依赖
com.github.pagehelper pagehelper-spring-boot-starter 1.4.1添加该依赖之后⽆需再添加MyBatis的依赖,因为该依赖默认依赖了MyBatis:
编写配置⽂件
使⽤yaml格式:
pagehelper: helper-dialect: mysql reasonable: true support-methods-arguments: true params: count=countSql使⽤properties格式:
# 指定分页插件的⽅⾔pagehelper.helper-dialect=mysql# 分页合理化pagehelper.reasonable=true# ⽀持⽅法参数pagehelper.support-methods-arguments=true#配置参数映射pagehelper.params=count=countSql
参数说明:可参考官⽅⽂档
准备数据表
准备Mapper接⼝测试查询全部数据
运⾏结果:
默认SQL语句就是查询全部数据
PageHelper 分页查询
使⽤PageHelper.startPage(pageNum,pageSize)⽅法来设置分页信息,分别是当前页数和每页显⽰的总记录数
pagehelper lambda用法
pagehelper lambda用法
PageHelper Lambda用法
PageHelper是一个Java分页插件,它为我们提供了方便快捷的分页查询功能。在使用PageHelper时,我们通常会使用Lambda表达式对查询条件进行描述。以下是一些PageHelper Lambda的常用用法:
1. 简单的分页查询
我们可以通过PageHelper的startPage方法来指定分页的起始页和每页显示的数量,然后在查询语句中使用Lambda表达式来描述查询条件。
(pageNum, pageSize);
List userList = (example -> ()
.andNameLike("%张%")
.andAgeGreaterThan(20));
以上代码中,pageNum表示要查询的页码,pageSize表示每页显示的数量。userList是查询结果的列表,其中User是查询结果的实体类。
2. 排序查询
除了分页查询外,我们还可以使用PageHelper Lambda进行排序查询。可以通过orderBy方法来指定排序字段和排序方式。 (pageNum, pageSize)
.orderBy(User::getAge)
.orderByDesc(User::getName);
List userList = (example -> ()
.andNameLike("%张%")
.andAgeGreaterThan(20));
以上代码中,orderBy方法用于指定排序字段和排序方式,orderBy(User::getAge)表示按照年龄升序排序,orderByDesc(User::getName)表示按照名称降序排序。
3. 多表关联查询
在进行多表关联查询时,我们可以使用PageHelper Lambda来描述多表关联的条件。
pagehelper 的doselectpage方法 2
pagehelper 的doselectpage方法
PageHelper 是一个开源的分页插件,它为我们提供了一种简单、高效的分页查询方式。其中,doselectpage 方法位于 PageHelper 类中,是其最重要的方法之一。通过对该方法的深入分析,我们可以进一步了解
PageHelper 的工作原理和使用方式。值得注意的是,doselectpage 方法是 PageHelper 的核心方法之一,用于实现分页查询的逻辑。该方法接受两个参数,分别是 pageNum 和 pageSize。pageNum 表示需要查询的页码,而 pageSize 则表示每页的记录数。该方法将会返回一个
PageInfo 对象,用于包装查询结果。
在 doselectpage 方法内部,首先会进行查询之前的准备工作。这包括设置查询语句的偏移量和限制数量,以及获取待查询的总记录数。通过调用 Page 方法,我们可以指定查询起始位置和每页的记录数,从而实现分页查询的功能。接下来,doSelectPage 方法将通过拦截器的方式拦截到数据库的查询操作。在拦截到查询之后,它会调用 PageInterceptor
类的 intercept 方法来处理分页查询逻辑。PageInterceptor 是 PageHelper
的核心拦截器,用于在查询语句执行之前对其进行修改。在 intercept
方法中,PageInterceptor 首先会判断当前是否已经开启了分页功能。如果没有,则会直接返回查询结果;如果开启了分页功能,则会执行分页查询的核心逻辑。PageInterceptor 会通过拦截 StatementHandler 类的
prepare 方法来修改查询语句的实际执行逻辑。在 prepare 方法中,PageInterceptor 首先会判断当前查询语句是否为 SELECT 类型的语句。如果不是,则直接返回;如果是,则会对其进行修改。PageInterceptor
Mybatis分页插件PageHelper的使用详解
Mybatis分页插件PageHelper的使⽤详解
1.说明
如果你也在⽤Mybatis,建议尝试该分页插件,这个⼀定是最⽅便使⽤的分页插件。
该插件⽬前⽀持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库分页。
2.使⽤⽅法
第⼀步:在Mybatis配置xml中配置拦截器插件:
第⼆步:在代码中使⽤
1、设置分页信息:
//获取第1页,10条内容,默认查询总数count
PageHelper.startPage(1, 10);
//紧跟着的第⼀个select⽅法会被分页
List list = countryMapper.selectIf(1);
2、取分页信息
//分页后,实际返回的结果list类型是Page,如果想取出分页信息,需要强制转换为Page,
Page listCountry = (Page)list;
listCountry.getTotal();
3、取分页信息的第⼆种⽅法
//获取第1页,10条内容,默认查询总数count
PageHelper.startPage(1, 10);
List list = countryMapper.selectAll();
//⽤PageInfo对结果进⾏包装
PageInfo page = new PageInfo(list);
//测试PageInfo全部属性
//PageInfo包含了⾮常全⾯的分页属性
assertEquals(1, page.getPageNum());
assertEquals(10, page.getPageSize());
assertEquals(1, page.getStartRow());
assertEquals(10, page.getEndRow());
assertEquals(183, page.getTotal());
assertEquals(19, page.getPages());
pagehelper方法
pagehelper方法
PageHelper是MyBatis分页插件,通过拦截Executor的.query()方法实现了分页功能。在使用PageHelper前,需要在MyBatis的配置文件中配置插件。以下是PageHelper的基本用法:
1.配置pom.xml文件,加入依赖:
```
com.github.pagehelper
pagehelper
5.0.3
```
2.在MyBatis的配置文件中配置PageHelper插件:
```
interceptor="com.github.pagehelper.PageInterceptor">
value="pageNum=page;pageSize=limit;"/>
value="true"/>
```
3.在代码中使用PageHelper分页:
```
// 使用PageHelper进行分页查询
PageHelper.startPage(1, 10);
List userList = userMapper.selectUserList();
// 将查询结果封装到PageInfo对象中
PageInfo pageInfo = new PageInfo<>(userList);
```
其中,PageHelper.startPage()方法的两个参数分别是页码和每页显示数量,通过设置这两个参数实现分页查询。
4.在返回结果中获取分页相关信息:
```
// 获取总记录数
long total = pageInfo.getTotal();
// 获取当前页码
PageHelper分页插件及PageInfo介绍及使用
PageHelper分页插件及PageInfo介绍及使⽤
PageHelper分页插件及PageInfo介绍及使⽤
1. MyBatis分页插件-PageHelper的配置
com.github.pagehelper
pagehelper
5.1.2
com.github.jsqlparser
jsqlparser
0.9.5
2.配置拦截器插件:
mybatis-config.xml全局配置⽂件中
3.PageInfo属性表
//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//由于startRow和endRow不常⽤,这⾥说个具体的⽤法
//可以在页⾯中"显⽰startRow到endRow 共size条数据"
//当前页⾯第⼀个元素在数据库中的⾏号
private int startRow;
//当前页⾯最后⼀个元素在数据库中的⾏号
private int endRow;
//总记录数
private long total;
//总页数
private int pages;
//结果集
private List list;
//前⼀页
private int prePage;
//下⼀页
private int nextPage;
//是否为第⼀页
private boolean isFirstPage;
//是否为最后⼀页
private boolean isLastPage;
//是否有前⼀页
private boolean hasPreviousPage;
//是否有下⼀页
private boolean hasNextPage;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;
