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 }