-
Notifications
You must be signed in to change notification settings - Fork 0
/
PageUtils.java
186 lines (158 loc) · 3.59 KB
/
PageUtils.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
package com.stkj.pperty.util;
import java.io.Serializable;
import java.util.List;
import com.alibaba.fastjson.JSONException;
import lombok.Setter;
/**
* 分页对象. 包含当前页数据及分页信息如总记录数.
*
* @author peak
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
public class PageUtils<T> implements Serializable {
private static final long serialVersionUID = 3297445200287541862L;
public final static String PARAMS_KEY_PAGE_NO = "page";
public final static String PARAMS_KEY_PAGE_LIMIT = "rows";
public final static String PARAMS_KEY_PAGE_OFFSET = "offset";
public final static String PARAMS_KEY_VO_SEARCH_MODE = "vo";
public final static int DEFAULT_PAGE_SIZE = 20;
public final static int DEFAULT_PAGE = 1;
// 一页显示的记录数
/** The limit. */
private int pageSize = DEFAULT_PAGE_SIZE;
// 记录总数
/** The total rows. */
private long totalRows;
// 当前页码
/** The page no. */
private int pageNo = DEFAULT_PAGE;
// 结果集存放List
/** The result list. */
private List<T> resultList;
@Setter
private T query;
public PageUtils(int pageSize, long totalRows, int pageNo, List<T> resultList) {
super();
this.pageSize = (pageSize == 0 ? DEFAULT_PAGE_SIZE : pageSize);
this.totalRows = totalRows;
this.pageNo = (pageNo == 0 ? DEFAULT_PAGE : pageNo);
this.resultList = resultList;
}
public PageUtils() {
}
public static <T> PageUtils<T> getInstance(int pageNo,int pageSize,T query){
PageUtils pageUtils = new PageUtils();
pageUtils.pageNo = pageNo;
pageUtils.pageSize = pageSize;
pageUtils.query = query;
return pageUtils;
}
/**
* Gets the result list.
*
* @return the result list
*/
public List<T> getResultList() {
return resultList;
}
/**
* Sets the result list.
*
* @param resultList
* the new result list
*/
public void setResultList(List<T> resultList) {
this.resultList = resultList;
}
// 计算总页数
/**
* Gets the total pages.
*
* @return the total pages
*/
public long getTotalPages() {
long totalPages;
if (totalRows % pageSize == 0) {
totalPages = totalRows / pageSize;
} else {
totalPages = (totalRows / pageSize) + 1;
}
return totalPages;
}
/**
* Gets the total rows.
*
* @return the total rows
*/
public long getTotalRows() {
return totalRows;
}
/**
* Sets the total rows.
*
* @param totalRows
* the new total rows
*/
public void setTotalRows(long totalRows) {
this.totalRows = totalRows;
}
/**
* Gets the offset.
*
* @return the offset
*/
public int getOffset() {
return (pageNo - 1) * pageSize;
}
/**
* Gets the end index.
*
* @return the end index
*/
public long getEndIndex() {
if (getOffset() + pageSize > totalRows) {
return totalRows;
} else {
return getOffset() + pageSize;
}
}
/**
* Gets the page no.
*
* @return the page no
*/
public int getPageNo() {
return pageNo;
}
/**
* Sets the page no.
*
* @param pageNo
* the new page no
*/
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public boolean hasNextPage() {
boolean hasNextPage = false;
if ((pageNo * pageSize) < totalRows) {
hasNextPage = true;
}
return hasNextPage;
}
public String toJSONString() {
try {
String resultArray = FastJSONUtil.object2json(resultList);
return "{\"total\":" + totalRows + ",\"rows\":" + resultArray + "}";
} catch (JSONException e) {
e.printStackTrace();
return "{\"total\":0,\"rows\":[]}";
}
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
}