1.导入jar包
<!-- 分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.0.4</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-autoconfigure</artifactId> <version>1.2.10</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.10</version> <exclusions> <exclusion> <artifactId>pagehelper</artifactId> <groupId>com.github.pagehelper</groupId> </exclusion> </exclusions> </dependency>
2.yml中的配置
pagehelper: helperDialect: mysql reasonable: true supportMethodsArguments: true params: count=countSql
3.封装PageRequest
package com.ccc.demoboot.commons; /** * 分页请求 */ public class PageRequest { /** * 当前页码 */ private int pageNum; /** * 每页数量 */ private int pageSize; public int getPageNum() { return pageNum; } public void setPageNum(int pageNum) { this.pageNum = pageNum; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } }
4.封装PageUtils
package com.ccc.demoboot.commons; import com.github.pagehelper.PageInfo; public class PageUtils { /** * 将分页信息封装到统一的接口 * @return */ public static PageResult getPageResult(PageInfo<?> pageInfo) { PageResult pageResult = new PageResult(); pageResult.setPageNum(pageInfo.getPageNum()); pageResult.setPageSize(pageInfo.getPageSize()); pageResult.setTotalSize(pageInfo.getTotal()); pageResult.setTotalPages(pageInfo.getPages()); pageResult.setContent(pageInfo.getList()); return pageResult; } }
5.封装分页返回的结果PageResult
package com.ccc.demoboot.commons; import java.util.List; /** * 分页结果类 */ public class PageResult { /** * 当前页码 */ private int pageNum; /** * 每页数量 */ private int pageSize; /** * 记录总数 */ private long totalSize; /** * 页码总数 */ private int totalPages; /** * 数据模型 */ private List<?> content; public int getPageNum() { return pageNum; } public void setPageNum(int pageNum) { this.pageNum = pageNum; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public long getTotalSize() { return totalSize; } public void setTotalSize(long totalSize) { this.totalSize = totalSize; } public int getTotalPages() { return totalPages; } public void setTotalPages(int totalPages) { this.totalPages = totalPages; } public List<?> getContent() { return content; } public void setContent(List<?> content) { this.content = content; } }
6.controller层的实现
注意:以下四句话必须放在查询总数之前,放在逻辑处理之前,不然分页将不起作用
package com.ccc.demoboot.controller;
import com.ccc.demoboot.commons.*;
import com.ccc.demoboot.domain.*;
import com.ccc.demoboot.response.ResultModel;
import com.ccc.demoboot.service.*;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@RestController
public class pagecs {
@Autowired
private RiskUserService riskUserService;
@RequestMapping(value = "getuser11")
public ResultModel addProject(@RequestBody Map<String, Object> map) {
PageRequest pageRequest=new PageRequest();
pageRequest.setPageSize(Integer.parseInt(map.get("pageSize").toString()));
pageRequest.setPageNum(Integer.parseInt(map.get("pageNum").toString()));
PageHelper.startPage(pageRequest.getPageNum(), pageRequest.getPageSize());
List<RiskUser> riskUserList=riskUserService.getUserByCompanyId(17);
PageResult pageResult= PageUtils.getPageResult(new PageInfo<>(riskUserList));
return ResultModel.successModel("查询成功",pageResult);
}
}
附加内容:PageInfo属性表
当前页 private int pageNum; 每页的数量 private int pageSize; 当前页的数量 private int size; //由于startRow和endRow不常用,这里说个具体的用法 //可以在页面中"显示startRow到endRow 共size条数据" 当前页面第一个元素在数据库中的行号 private int startRow; 当前页面最后一个元素在数据库中的行号 private int endRow; 总记录数 private long total; 总页数 private int pages; 结果集 private List<T> list; 第一页 private int firstPage; 前一页 private int prePage; 是否为第一页 private boolean isFirstPage = false; 是否为最后一页 private boolean isLastPage = false; 是否有前一页 private boolean hasPreviousPage = false; 是否有下一页 private boolean hasNextPage = false; 导航页码数 private int navigatePages; 所有导航页号 private int[] navigatepageNums; 后台分页