PageHelper的使用

本文详细介绍了如何在SpringBoot项目中引入和配置PageHelper进行分页处理,包括依赖管理、配置选项以及如何在查询操作中使用startPage和PageInfo类获取分页信息。
摘要由CSDN通过智能技术生成

PageHelper

引入依赖
<!-- spring-boot mybatis pagehelper -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.4.1</version>
</dependency>

引入最新的就可以,引入旧版会出现循环依赖问题

以下方法不推荐:

<!-- pageHelper -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.10</version>
</dependency>

引入这个需要自己去手动注入

@Bean
	 PageHelper pageHelper(){
	     //分页插件
	     PageHelper pageHelper = new PageHelper();
	     Properties properties = new Properties();
	     properties.setProperty("reasonable", "true");
	     properties.setProperty("supportMethodsArguments", "true");
	     properties.setProperty("returnPageInfo", "check");
	     properties.setProperty("params", "count=countSql");
	     pageHelper.setProperties(properties);

	     //添加插件
	     new SqlSessionFactoryBean().setPlugins(new Interceptor[]{pageHelper});
	     return pageHelper;
	 }

配置
pagehelper:
  helper-dialect: mysql
  reasonable: true
  support-methods-arguments: true
使用

在查询操作之前调用 startPage 设置分页信息,设置页码和每页的条数

注意startPage只会对下一次SQL查询有效,如果调用两次SQL查询,则需要调用两次startPage

public Object getUsers(int pageNum, int pageSize) {
    Page<User> page = PageHelper.startPage(pageNum, pageSize);
    // 不带分页的查询
    List<UserEntity> list = userMapper.selectAllWithPage();
    // 将查询结果会自动设置到 Page 对象中
    System.out.println("listCnt:" + listWithPage.getTotal());
    // 2. 也可使用 PageInfo 来接收
    PageInfo<UserEntity> pageinfo = new PageInfo(list);
    return list;
}
方法解读
PageHelper.startPage

PageHelper.startPage(pageNum, pageSize, count, reasonable, pageSizeZero, reasonablePageSizes) 方法完整的签名如下:

javaCopy code
public static <E> Page<E> startPage(int pageNum, int pageSize, boolean count, Boolean reasonable, Boolean pageSizeZero, Boolean reasonablePageSizes);

其中,参数的含义如下:

  • pageNum:表示当前页码,即要查询的页数。
  • pageSize:表示每页显示的记录数。
  • count:表示是否进行总记录数的统计。如果设置为 true,PageHelper 会自动在执行分页查询前执行一次 count 查询,获取总记录数;如果设置为 false,则不会执行 count 查询。
  • reasonable:表示是否开启合理化设置。如果设置为 true,PageHelper 会自动根据当前页码和每页大小来调整分页参数,以保证查询结果不为空且不超出数据范围;如果设置为 false,则不开启合理化设置。
  • pageSizeZero:表示是否当 pageSize 参数为 0 时返回全部结果。如果设置为 true,当 pageSize 参数为 0 时,PageHelper 会执行特殊处理,返回全部结果;如果设置为 false,则按照正常逻辑处理,返回空结果。
  • reasonablePageSizes:表示是否在合理化设置中使用合理的每页大小。如果设置为 true,PageHelper 会根据当前页码和每页大小来调整分页参数,以确保每页大小合理;如果设置为 false,则只会根据当前页码来调整分页参数,不考虑每页大小是否合理。
Page

Page 类中的参数主要用于存储分页的相关信息,以及封装分页查询的结果。下面是 Page 类中常用的参数及其含义:

  1. total:总记录数,表示查询结果的总条目数。
  2. pages:总页数,表示查询结果分成的总页数。
  3. pageNum:当前页码,表示当前页是第几页。
  4. pageSize:每页大小,表示每页显示的记录数。
  5. result:当前页的数据列表,存储查询结果的实际数据。
  6. orderBy:排序字段,表示按照哪个字段进行排序。
  7. count:是否进行总记录数的统计,通常在进行分页查询时,会自动统计总记录数。
  8. startRow:当前页的起始行号,表示当前页的第一条记录在整个查询结果中的位置。
  9. endRow:当前页的结束行号,表示当前页的最后一条记录在整个查询结果中的位置。
  10. size:当前页的记录数,表示当前页实际的记录数,通常与 pageSize 相同。
  11. orderByOnly:是否仅对 orderBy 进行排序,通常在进行复杂的分页查询时,可能会用到。
  12. countSignal:是否强制开启 count 查询,表示是否强制进行总记录数的统计。

这些参数可以帮助您更方便地获取分页查询的相关信息,以及处理分页查询的结果。在使用 PageHelper 进行分页查询时,您可以根据需要选择合适的参数来获取和处理分页信息。

PageInfo

PageInfo 类是 PageHelper 提供的用于封装分页查询结果和分页信息的类。下面是 PageInfo 类的构造方法和常用参数:

构造方法:

javaCopy codepublic PageInfo(List<T> list, int navigatePages);
public PageInfo(List<T> list, int navigatePages, int pageNum);
public PageInfo(List<T> list, int navigatePages, int pageNum, long total);
  • list:表示分页查询的结果列表。
  • navigatePages:表示导航页码数量,即在分页导航栏中显示的页码数量。
  • pageNum:表示当前页码。
  • total:表示总记录数。

常用参数和方法

  • total:表示总记录数。
  • pages:表示总页数。
  • pageNum:表示当前页码。
  • pageSize:表示每页大小。
  • size:表示当前页的记录数。
  • navigatePages:表示导航页码数量。
  • navigatepageNums:表示导航页码数组,即分页导航栏中显示的页码列表。
  • list:表示分页查询的结果列表。
  • hasPreviousPage():判断是否有上一页。
  • hasNextPage():判断是否有下一页。
  • isFirstPage():判断是否为第一页。
  • isLastPage():判断是否为最后一页。

这些参数和方法可以帮助您更方便地获取分页查询的相关信息,并进行分页导航和结果展示。您可以根据需要选择合适的构造方法和使用方法,以满足不同场景下的分页需求。

  • 23
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值