其他分享
首页 > 其他分享> > PageInfo手动分页实现方式

PageInfo手动分页实现方式

作者:互联网

 1 /**
 2  * 使用PageInfo做分页时手动设置参数的工具类
 3  * pageNum  页码
 4  * pageSize 每页包含的数据量
 5  * PageInfo 对象
 6  */
 7  
 8 public class PageInfoUtils {
 9     public static PageInfo PageInfoUtils(Integer pageNum, Integer pageSize, PageInfo pageInfo){
10         int start = 0;
11         int end = 0;
12         // 总页数
13         int totalPages = 0;
14         int totalRecord = (int) pageInfo.getTotal();
15         pageInfo.setPageNum(pageNum);
16         pageInfo.setPageSize(pageSize);
17         pageInfo.setSize(totalRecord);
18         if(totalRecord%pageSize==0){
19             totalPages = totalRecord / pageSize;
20         }else {
21             totalPages = totalRecord / pageSize + 1;
22         }
23         //初始边界值计算
24         if (pageNum == 1){
25             start = 0;
26             // 设置没有前一页
27             pageInfo.setHasPreviousPage(false);
28             // 设置前一页的值为0
29             pageInfo.setPrePage(0);
30             // 设置是否为第一页
31             pageInfo.setIsFirstPage(true);
32         }else {
33                 // 如果不是第一页, 需要计算最开始页的值:每页数量 * (当前的页数 - 1)
34             start = pageInfo.getPageSize()*(pageInfo.getPageNum()-1);
35             // 设置前一页的值为true
36             pageInfo.setHasPreviousPage(true);
37             // 设置前一页的值
38             pageInfo.setPrePage(pageNum-1);
39             // 设置是否为第一页的值为false
40             pageInfo.setIsFirstPage(false);
41         }
42         // 设置成上一页的最后一个值
43         pageInfo.setStartRow((pageNum-1)*pageSize);
44         //结束边界值计算
45         // 判断 当前页的第一个值 + 每页的数量值 是否大于总数
46         if ((start+pageInfo.getPageSize() > pageInfo.getTotal())){
47              // 把总数赋值给end
48             end = totalRecord;
49             // 设置是否有下一页的值为false
50             pageInfo.setHasNextPage(false);
51             // 设置为最后一页
52             pageInfo.setIsLastPage(true);
53             // 设置最后一页的元素在下标
54             pageInfo.setEndRow(totalRecord);
55         }else {
56                 // 上一页的最后值 + 当前页的页面数
57             end = start + pageInfo.getPageSize();
58             // 设置是否有下一页
59             pageInfo.setHasNextPage(true);
60             // 设置下一页的页数
61             pageInfo.setNextPage(pageNum + 1);
62             // 设置不是最后一页
63             pageInfo.setIsLastPage(false);
64             // 设置最后一页的元素下标:当前页 * 页面数量
65             pageInfo.setEndRow(pageNum * pageSize);
66         }
67         // 设置页面上要显示的数据
68         if (start < end && end <= totalRecord){
69             pageInfo.setList(pageInfo.getList().subList(start,end));
70         }
71         // 判断总数是否为0
72         if(pageInfo.getSize() == 0) {
73              // 都设置为0
74             pageInfo.setStartRow(0);
75             pageInfo.setEndRow(0);
76         } else {
77              // 当页的第一个值为:上页数的最后值+1
78             pageInfo.setStartRow(pageInfo.getStartRow() + 1);
79            // 当页的最后值为:减一加页面总数
80             pageInfo.setEndRow(pageInfo.getStartRow()-1+pageInfo.getSize());
81         }
82         // 设置总页数
83         pageInfo.setPages(totalPages);
84         // 设置导航条上的最后一页
85         pageInfo.setNavigateLastPage(totalPages>pageNum?pageNum+1:totalPages);
86         return pageInfo;
87     }
88 }

 

标签:pageNum,分页,pageSize,手动,totalRecord,PageInfo,设置,一页,pageInfo
来源: https://www.cnblogs.com/wuxixin/p/16365094.html