1 import java.util.List;
2
3 /**
4 * 分页
5 */
6 public class PageUtil {
7
8 private int rowcount;// 数据里面的数据总行数
9 private int pagesize;// 一页多少行数据
10 private int startrow;// 查询起始行
11 private int currnav;// 当前点击的导航
12 private int navnum;// 页面维护的固定导航个数
13 private int navcount;// 页面数据整体导航个数 总共多少页
14 private int begin;// 页面展示的起始导航
15 private int end;// 页面维护展示的结束导航
16 private int prev;// 上一页
17 private int next;// 下一页
18 private int first = 1;// 首页
19 private int last;// 尾页
20 private List pageData;// 存放分页的数据
21
22 public PageUtil(int rowcount, int pagesize, int currnav, int navnum) {
23 super();
24 this.rowcount = rowcount;
25 this.pagesize = pagesize;
26 this.currnav = currnav;
27 this.navnum = navnum;
28 this.navcount = (int) Math.ceil((rowcount * 1.0) / pagesize);
29 this.last = this.navcount;
30 // 大于第一页 增强容错性
31 this.currnav = Math.max(this.first, currnav);// 维护小于第一页 维护固定第一页 取最大
32 this.currnav = Math.min(this.currnav, this.last);// 超过最后一页,维护最后一页 取最小
33 // 当前页的起始行 startrow (当前点击的导航页 -1)*一页多少行数据
34 this.startrow = (currnav - 1) * pagesize;
35 // 处理上一页
36 this.prev = Math.max(this.first, currnav - 1);
37 // 处理下一页 如果当前导航页是最后一页
38 this.next = Math.min(this.navcount, currnav + 1);
39 // begin 页面展示的起始导航
40 this.begin = Math.max(1, currnav - navnum / 2);
41 // end 页面展示的结束导航
42 this.end = Math.min(navcount, begin + navnum - 1);
43 // 当前导航是76 -10 +1 =67 1 -10+1 = -8
44 if ((this.end - this.begin) < (this.navnum - 1)) {
45 this.begin = Math.max(1, this.last - navnum + 1);
46 }
47 }
48
49 public PageUtil() {
50 super();
51 }
52
53 public int getRowcount() {
54 return rowcount;
55 }
56
57 public void setRowcount(int rowcount) {
58 this.rowcount = rowcount;
59 }
60
61 public int getPagesize() {
62 return pagesize;
63 }
64
65 public void setPagesize(int pagesize) {
66 this.pagesize = pagesize;
67 }
68
69 public int getStartrow() {
70 return startrow;
71 }
72
73 public void setStartrow(int startrow) {
74 this.startrow = startrow;
75 }
76
77 public int getCurrnav() {
78 return currnav;
79 }
80
81 public void setCurrnav(int currnav) {
82 this.currnav = currnav;
83 }
84
85 public int getNavnum() {
86 return navnum;
87 }
88
89 public void setNavnum(int navnum) {
90 this.navnum = navnum;
91 }
92
93 public int getNavcount() {
94 return navcount;
95 }
96
97 public void setNavcount(int navcount) {
98 this.navcount = navcount;
99 }
100
101 public int getBegin() {
102 return begin;
103 }
104
105 public void setBegin(int begin) {
106 this.begin = begin;
107 }
108
109 public int getEnd() {
110 return end;
111 }
112
113 public void setEnd(int end) {
114 this.end = end;
115 }
116
117 public int getPrev() {
118 return prev;
119 }
120
121 public void setPrev(int prev) {
122 this.prev = prev;
123 }
124
125 public int getNext() {
126 return next;
127 }
128
129 public void setNext(int next) {
130 this.next = next;
131 }
132
133 public int getFirst() {
134 return first;
135 }
136
137 public void setFirst(int first) {
138 this.first = first;
139 }
140
141 public int getLast() {
142 return last;
143 }
144
145 public void setLast(int last) {
146 this.last = last;
147 }
148
149 public List getPageData() {
150 return pageData;
151 }
152
153 public void setPageData(List pageData) {
154 this.pageData = pageData;
155 }
156 }