<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>${pagehelper.version}</version> </dependency>
pagehelper: params: count=countSql # 指定分页插件使用哪种方言 helper-dialect: mysql # 分页合理化参数 pageNum<=0时会查询第一页 pageNum>pages(超过总数时) 会查询最后一页 reasonable: ‘true‘ support-methods-arguments: ‘true‘
1 @Data 2 public class PageRequest { 3 /** 4 * 当前页码 5 */ 6 private int pageNum; 7 /** 8 * 每页数量 9 */ 10 private int pageSize; 11 }
1 @Data 2 public class PageResult<T> { 3 4 /** 5 * 当前页码 6 */ 7 private int pageNum; 8 /** 9 * 每页数量 10 */ 11 private int pageSize; 12 /** 13 * 记录总数 14 */ 15 private long totalSize; 16 /** 17 * 页码总数 18 */ 19 private int totalPages; 20 /** 21 * 数据模型 22 */ 23 private List<T> list; 24 }
1 @FunctionalInterface 2 public interface PageSelectFun { 3 4 List<?> select(); 5 }
1 public class PageUtils { 2 3 /** 4 * 调用分页插件完成分页 并 封装 5 * 6 * @param pageRequest 分页请求对象 7 * @return 分页返回对象 8 */ 9 public static PageResult setPageResult(PageRequest pageRequest, PageSelectFun fun) { 10 11 //设置 页码/页距 12 int pageNum = pageRequest.getPageNum(); 13 int pageSize = pageRequest.getPageSize(); 14 PageHelper.startPage(pageNum, pageSize); 15 16 //待插入的代码片段 即要查询的语句 17 List<?> select = fun.select(); 18 19 //查询结果进行包装 20 PageInfo<?> pageInfo = new PageInfo<>(select); 21 22 //再将包装后的对象再封装到写好的返回对象 使返回内容更加明了 23 PageResult pageResult = new PageResult(); 24 25 return setPageResult(pageInfo, pageResult); 26 } 27 28 private static PageResult setPageResult(PageInfo<?> pageInfo, PageResult pageResult) { 29 pageResult.setPageNum(pageInfo.getPageNum()); 30 pageResult.setPageSize(pageInfo.getPageSize()); 31 pageResult.setTotalSize(pageInfo.getTotal()); 32 pageResult.setTotalPages(pageInfo.getPages()); 33 pageResult.setList(pageInfo.getList()); 34 35 return pageResult; 36 } 37 38 }
1 @Override 2 public PageResult findPage(PageRequest pageRequest) { 3 4 return PageUtils.setPageResult(pageRequest, () -> 5 buildingCategoryMapper.selectPage() 6 ); 7 }
1 List<BuildingCategory> selectPage();
{ "pageNum":2, "pageSize":10 }
{ "pageNum": 2, "pageSize": 10, "totalSize": 18, "totalPages": 2, "list": [ { "id": 11, "name": "203", "parentCid": 17, "catLevel": 3, "sort": null, "floorPicUrl": null, "type": 0, "indexX": null, "indexY": null, "children": null }... ] }
原文:https://www.cnblogs.com/ted0067/p/14295706.html