前言:SpringCloud的分布式项目也同理在Service层所在项目中进行如下操作
在业务层(Service层)中引入如下依赖:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.12</version>
</dependency>
修改配置文件application.properties:
pagehelper.helperDialect.reasonable=true
pagehelper.helperDialect.supportMethodsArguments=true
pagehelper.helperDialect.params:count=countSql
配置说明:
- reasonable:分页合理化参数,默认值为false。当该参数设置为 true 时,pageNum<=0 时会查询第一页,pageNum>pages(超过总数时),会查询最后一页。默认false 时,直接根据参数进行查询。
- supportMethodsArguments:支持通过 Mapper 接口参数来传递分页参数,默认值false,分页插件会从查询方法的参数值中,自动根据上面 params 配置的字段中取值,查找到合适的值时就会自动分页。 使用方法可以参考测试代码中的 com.github.pagehelper.test.basic 包下的 ArgumentsMapTest 和 ArgumentsObjTest。
- params:为了支持startPage(Object params)方法,增加了该参数来配置参数映射,用于从对象中根据属性名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默认值, 默认值为pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero。
在控制器中使用分页助手
@RequestMapping("/test")
public void test(Integer page, Integer pageSize) {
// 设置分页信息,参数一代表从第几页开始查询,参数二代表每页查询的记录数
PageHelper.startPage(page, pageSize);
List<TestItem> list = testService.findTestItem();
PageInfo<TestItem> pageInfo = new PageInfo<TestItem>(list);
for (TestItem testItem : pageInfo.getList()) {
System.out.println(testItem);
}
System.out.println("当前页:" + pageInfo.getPageNum());
System.out.println("每页显示记录数:" + pageInfo.getPageSize());
System.out.println("总页数:" + pageInfo.getPages());
}
前端返回结果大致如下: