首页 > 编程笔记 > Java笔记 阅读:66

MyBatis pageHelper实现分页查询(附带实例)

分页查询是日常开发中比较常用的功能。MyBatis 框架下也有很多插件实现分页功能,比如 pageHelper。这是一款非常简单、易用的分页插件,能很好地集成在 Spring Boot 中。

pageHelper 是一款基于 MyBatis 的数据库分页插件,所以我们在使用它时需要使用 MyBatis 作为持久层框架。

下面通过示例演示 pageHelper 实现分页查询。

添加pageHelper依赖

修改 pom.xml 文件,添加 pageHelper 依赖:
<!-- pagehelper -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
</dependency>
pageHelper 提供了针对 Spring Boot 框架的依赖库 pagehelper-spring-boot-starter,对于 Spring Boot 项目可以使用 pagehelper-spring-boot-starter 组件。

增加pageHelper配置

在 application.properties 中增加 pageHelper 配置:
# 分页框架
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
上面的示例是 pageHelper 分页框架的初始配置,主要用于指定数据库类型:

调用测试

增加单元测试方法,验证分页功能是否生效。示例代码如下:
@Test
public void testSelectListPaged() {
    PageHelper.startPage(1, 5);
    List<Student> students = studentMapper.selectAll();
    PageInfo<Student> pageInfo = new PageInfo<Student>(students);
    System.out.println("总页数:"+pageInfo.getPages()+",总条数:"+pageInfo.getTotal()+",当前页:"+pageInfo.getPageNum());
    for (Student stu : students){
        System.out.println("name:"+stu.getName()+",age:"+stu.getAge());
    }
}
在上面的示例中,分页的核心只有一行代码,PageHelper.startPage(page,pageSize); 就标识开始分页。添加此行代码之后,pageHelper 插件会通过其内部的拦截器将执行的 SQL 语句转化为分页的 SQL 语句。

单击 Run Test 或在方法上右击,选择 Run 'testSelectListPaged',查看单元测试结果,运行结果如下图所示:


图 1 单元测试的运行结果

结果表明单元测试方法运行成功,控制台输出了当前页的数据列表、总页数、数据总条数和当前页。这说明使用 pageHelper 插件成功实现了分页功能。

使用时 PageHelper.startPage(pageNum, pageSize) 一定要放在列表查询的方法中,这样在查询时会查出相应的数据量以及总数。

相关文章