【Spring Boot】分页

分页查询

分页查询是日常开发中比较常用的功能。MyBatis框架下也有很多插件实现分页功能,比如pageHelper。这是一款非常简单、易用的分页插件,能很好地集成在Spring Boot中。pageHelper是一款基于MyBatis的数据库分页插件,所以我们在使用它时需要使用MyBatis作为持久层框架。下面通过示例演示pageHelper实现分页查询。

1.添加pageHelper依赖

修改pom.xml文件,添加pageHelper依赖:

<dependency>
     <groupId>com.github.pagehelper</groupId>
     <artifactId>pagehelper-spring-boot-starter</artifactId>
     <version>1.4.6</version>
</dependency>

pageHelper提供了针对Spring Boot框架的依赖库pagehelper-spring-boot-starter,对于Spring Boot项目可以使用pagehelper-spring-boot-starter组件。

2.增加pageHelper配置

在application.properties中增加pageHelper配置。

# 分页框架
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql

上面的示例是pageHelper分页框架的初始配置,主要用于指定数据库类型。

  • helperDialect:指定数据库类型,可以不配置,pageHelper插件会自动检测数据库的类型。
  • reasonable:分页合理化参数,默认为false,当该参数设置为true时,当pageNum≤0时,默认显示第一页,当pageNum超过pageSize时,显示最后一页。
  • supportMethodsArguments:分页插件会根据查询方法的参数,自动在params配置的字段中取值,找到合适的值会自动分页。
  • params:用于从对象中根据属性名取值,可以配置pageNum、pageSize,count不用配置映射的默认值。

3.调用测试

增加单元测试方法,验证分页功能是否生效。示例代码如下:

 @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’,查看单元测试结果,运行结果如图所示。

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

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

你可能感兴趣的:(Spring小知识,spring,boot,后端,pageHelper,java)