JAVA实现分页查询

    技术2022-07-20  66

    建立bean类 @NoArgsConstructor public class Page implements Serializable { private static final long serialVersionUID = -3198048449643774660L; private int pageNow = 1; // 当前页数 private int pageSize = 10; // 每页显示记录的条数(根据自身需求修改每页显示条数) private int totalCount; // 总记录条数 private int totalPageCount; // 总页数 private int startPos; // 开始位置,从0开始 //构造函数,参数:总记录数和当前页 public Page(int totalCount, int pageNow) { this.totalCount = totalCount; this.pageNow = pageNow; } //计算总页数,总页数=总记录数/每页显示记录的条数 public int getTotalPageCount() { totalPageCount = getTotalCount() / getPageSize(); return (totalCount % pageSize == 0) ? totalPageCount : totalPageCount + 1; } public void setTotalPageCount(int totalPageCount) { this.totalPageCount = totalPageCount; } public int getPageNow() { return pageNow; } public void setPageNow(int pageNow) { this.pageNow = pageNow; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getTotalCount() { return totalCount; } public void setTotalCount(int totalCount) { this.totalCount = totalCount; } //取得选择记录的初始位置 public int getStartPos() { return (pageNow - 1) * pageSize; } }

    2.Controller层

    @GetMapping("getPage/{pageNow}") public List<RoleBean> roleAllListPage(@PathVariable("pageNow") String pageNow){ Page page = new Page(); List<RoleBean> userList = null; //获取总的记录条数 int totalCount = roleNewService.getCount(); if(pageNow!=null&&Integer.parseInt(pageNow)!=0){ page=new Page(totalCount, Integer.parseInt(pageNow)); userList=roleNewService.findByPage(page.getStartPos(), page.getPageSize());//从startPos开始,获取pageSize条数据 }else{ page=new Page(totalCount, 1);//初始化pageNow为1 userList=roleNewService.findByPage(page.getStartPos(), page.getPageSize());//从startPos开始,获取pageSize条数据 } return userList; }

    注意:pgsql 查询的时候稍不一样。因为pgsql语句分页是要select * from “表名” LIMIT #{startPage} OFFSET #{endPage}

    startPage是page.getPageSize() endPage是page.getStartPos()。

    Processed: 0.008, SQL: 9