概要
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 项目中的分页查询功能。记得根据实际情况适配你的项目代码和需求。