Paging 分页器实例

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
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
* 分页器
*
* @author Create by YL on 2017/05/29.
*/
public class Paging<E> implements Serializable {
private static final long serialVersionUID = -2429864663690465105L;
private long page = 1; // 当前页
private long size = 10; // 每页显示记录数
private long total; // 总记录数
private long pages; // 总页数

private long start = 1; // 每页起始数(从1开始)
private long end; // 每页结束数
private long prev = 1; // 上一页(从1开始)
private long next; // 下一页
private boolean hasPrev; // 判断是否有上一页
private boolean hasNext; // 判断是否有下一页

private List<E> items = new ArrayList<E>(); // 查询结果集

public Paging() {
}

public Paging(long page, long size) {
this.page = page;
this.size = size;
}

public long getSize() {
return size;
}

public void setSize(long size) {
this.size = size;
}

public long getPage() {
if (page > this.getPages())
page = this.getPages();
if (page <= 0)
page = 1;
return page;
}

public void setPage(long page) {
this.page = page;
}

public long getTotal() {
return total;
}

public void setTotal(long total) {
this.total = total;
}

public long getPages() {
long total = this.getTotal();
long size = this.getSize();
if ((total % size) == 0) {
pages = total / size;
} else {
pages = total / size + 1;
}
return pages == 0 ? 1 : pages;
}

public void setPages(long pages) {
this.pages = pages;
}

/**
* 开始行,可用于Oracle、MySQL等分页
* <pre>
* Oracle: rownum <= endRow and rownum > startRow
* MySQL: limit startRow, pageSize
* </pre>
*/
public long getStart() {
start = this.getPage() > 0 ? (this.getPage() - 1) * this.getSize() : 0;
return start;
}

public void setStart(long start) {
this.start = start;
}

/**
* 结束行,可以用于oracle分页使用
* Oracle: rownum <= endRow
*/
public long getEnd() {
end = this.getStart() + this.getSize();
return end;
}

public void setEnd(long end) {
this.end = end;
}

public long getPrev() {
if (isHasPrev()) {
return getPage() - 1;
} else {
return getPage();
}
}

public void setPrev(long prev) {
this.prev = prev;
}

public long getNext() {
if (isHasNext()) {
return getPage() + 1;
} else {
return getPage();
}
}

public void setNext(long next) {
this.next = next;
}

public boolean isHasPrev() {
return this.getPage() - 1 >= 1;
}

public void setHasPrev(boolean hasPrev) {
this.hasPrev = hasPrev;
}

public boolean isHasNext() {
return getPage() + 1 <= getPages();
}

public void setHasNext(boolean hasNext) {
this.hasNext = hasNext;
}

public List<E> getItems() {
return items;
}

public void setItems(List<E> items) {
this.items = items;
}

@Override
public String toString() {
StringBuilder sb = new StringBuilder(100);
sb.append(this.getClass().getSimpleName());
sb.append(" [");
sb.append("page=").append(this.getPage());
sb.append(", size=").append(this.getSize());
sb.append(", total=").append(this.getTotal());
sb.append(", pages=").append(this.getPages());
sb.append(", start=").append(this.getStart());
sb.append(", end=").append(this.getEnd());
sb.append(", prev=").append(this.getPrev());
sb.append(", next=").append(this.getNext());
sb.append(", hasPrev=").append(this.isHasPrev());
sb.append(", hasNext=").append(this.isHasNext());
sb.append(", items=").append(items);
sb.append("]");
return sb.toString();
}
}
  • 本文作者: forever杨
  • 本文链接: https://blog.yl-online.top/posts/30063ce8.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。如果文章内容对你有用,请记录到你的笔记中。本博客站点随时会停止服务,请不要收藏、转载!