一、pom.xml 文件中引入依赖
<!--pagehelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
二、application.yml 文件中做如下配置
# 分页插件配置
pagehelper:
helperDialect: mysql
supportMethodsArguments: true
三、Controller API 层
@ApiOperation(value = "查询admin列表", notes = "查询admin列表", httpMethod = "POST")
@PostMapping("/getAdminList")
public GraceJSONResult getAdminList(
@ApiParam(name = "page", value = "查询第几页", required = false)
@RequestParam Integer page,
@ApiParam(name = "pageSize", value = "每页显示多少条记录", required = false)
@RequestParam Integer pageSize
);
四、Controller API 实现层
public static final Integer COMMON_START_PAGE = 1;
public static final Integer COMMON_PAGE_SIZE = 10;
@Override
public GraceJSONResult getAdminList(Integer page, Integer pageSize) {
if (page == null) {
page = COMMON_START_PAGE;
}
if (pageSize == null) {
pageSize = COMMON_PAGE_SIZE;
}
PagedGridResult result = adminUserService.queryAdminList(page, pageSize);
return GraceJSONResult.ok(result);
}
COMMON_START_PAGE 为 1,COMMON_PAGE_SIZE为 10,避免魔法值,便于修改维护。
五、Service 层 与 实现
/**
* 分页查询admin列表
*/
public PagedGridResult queryAdminList(Integer page, Integer pageSize);
@Override
public PagedGridResult queryAdminList(Integer page, Integer pageSize) {
Example adminExample = new Example(AdminUser.class);
adminExample.orderBy("createdTime").desc();
// 实现分页逻辑
PageHelper.startPage(page, pageSize);
List<AdminUser> adminUserList = adminUserMapper.selectByExample(adminExample);
return setterPagedGrid(adminUserList, page);
}
六、封装分页数据
public PagedGridResult setterPagedGrid(List<?> list,
Integer page) {
PageInfo<?> pageList = new PageInfo<>(list);
PagedGridResult gridResult = new PagedGridResult();
gridResult.setRows(list);
gridResult.setPage(page);
gridResult.setRecords(pageList.getTotal());
gridResult.setTotal(pageList.getPages());
return gridResult;
}