MyBatis分页插件PageHelper实现高效分页查询

概要

PageHelper 是一个开源的分页插件,用于在 MyBatis 中方便地实现分页功能。它可以在查询结果中加入分页信息,使得分页查询变得非常简单。下面将详细讲解如何在 MyBatis 项目中使用 PageHelper 分页插件

一、添加依赖

首先,在你的项目中添加 pagehelper-spring-boot-starter 依赖。如果是 Maven 项目,可以在 pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.4.7</version><!-- 使用所需版本号 -->
</dependency>

你可以在 PageHelper GitHub 查找最新的版本。

二、配置插件

一般情况下,PageHelper 不需要额外的配置,它会自动与 Spring Boot 集成。但是,如果你需要进行一些高级配置,你可以在 application.properties 或 application.yml 中添加配置项。

以下是一些常用的配置参数示例:

# application.yml
pagehelper:
  helperDialect: mysql  # 数据库类型,如 mysql、oracle、sqlserver
  reasonable: true      # 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页
  supportMethodsArguments: true  # 支持通过 Mapper 接口参数来传递分页参数
  params: count=countSql   # 使用count和分页插件时,会改变原来的count查询

三、在代码中使用

在需要分页的查询方法中,只需调用PageHelper.startPage(pageNum, pageSize) 来开启分页。分页信息会被注入到当前线程的上下文中。

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

// ... import statements ...

public PageInfo<DemoVO> getAll(int pageNum, int pageSize) {
    PageHelper.startPage(pageNum, pageSize);
    List<Demo> demos = demoMapper.selectAll();

    PageInfo<Demo> pageInfo = new PageInfo<>(demos );
    /**
    * 可以对查询结果进行进一步处理
    */
    return pageInfo;
}

在上述代码中,PageHelper.startPage(pageNum, pageSize) 开启分页,然后进行查询操作,得到查询结果。最后,通过 PageInfo 封装结果,可以获取到分页的详细信息。

需要注意的是,PageHelper 主要适用于 MyBatis 进行数据库查询的分页操作。如果你使用其他持久层框架,可能需要不同的分页解决方案

四、PageInfo 对象的属性含义

  • total:总记录数。
  • list:当前分页的记录
  • pageNum: 当前页码。
  • pageSize: 每页显示的记录数。
  • size: 当前页的记录数。
  • startRow: 当前页的起始行号。
  • endRow: 当前页的结束行号。
  • pages: 总页数。
  • prePage: 上一页页码。
  • nextPage: 下一页页码。
  • isFirstPage: 是否为第一页。
  • isLastPage: 是否为最后一页。
  • hasPreviousPage: 是否有上一页。
  • hasNextPage: 是否有下一页。
  • navigatePages: 导航页码数。
  • navigatepageNums: 所有导航页号。
  • navigateFirstPage: 导航条上的第一页页码。
  • navigateLastPage: 导航条上的最后一页页码。

这就是使用 PageHelper 分页插件的基本流程。通过以上步骤,你就能轻松实现在 MyBatis 项目中的分页查询功能。记得根据实际情况适配你的项目代码和需求。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值