page类
public class Page<T> implements IPage<T> {
private static final long serialVersionUID = 8545996863226528798L;
private List<T> records; 对象列表
private long total; 总记录
private long size; 每页记录数
private long current; 当前的页数
private List<OrderItem> orders; //和数据库列有关
private boolean optimizeCountSql; //是否记录优化
private boolean isSearchCount; //是否搜索
public Page() { //无参构造,相当于是初始化
this.records = Collections.emptyList();
this.total = 0L;
this.size = 10L;
this.current = 1L;
this.orders = new ArrayList();
this.optimizeCountSql = true;
this.isSearchCount = true;
}
public Page(long current, long size) { 当前页和每页记录数
this(current, size, 0L);
}
public Page(long current, long size, long total) {当前页,每页记录数,总数
this(current, size, total, true);
}
public Page(long current, long size, boolean isSearchCount) {
this(current, size, 0L, isSearchCount);
}
public Page(long current, long size, long total, boolean isSearchCount) {
this.records = Collections.emptyList();
this.total = 0L;
this.size = 10L;
this.current = 1L;
this.orders = new ArrayList();
this.optimizeCountSql = true;
this.isSearchCount = true;
if (current > 1L) {
this.current = current;
}
this.size = size;
this.total = total;
this.isSearchCount = isSearchCount;
}
public boolean hasPrevious() { //是否有上页,根据当前页是否大于1
return this.current > 1L;
}
public boolean hasNext() {
return this.current < this.getPages();
}
public List<T> getRecords() { //获取对象列表
return this.records;
}
设置对象列表,一般思路是去数据库查到对象的列表,然后再给page对象赋值,返回值是Page?一般都是为void,
是装饰着模式吗?有点像,在page的基础上添加一些值
public Page<T> setRecords(List<T> records) {
this.records = records;
return this;
}
public long getTotal() {//获取总的记录数
return this.total;
}
public Page<T> setTotal(long total) { //设置总记录数
this.total = total;
return this;
}
public long getSize() {
return this.size;
}
public Page<T> setSize(long size) {
this.size = size;
return this;
}
public long getCurrent() {
return this.current;
}
public Page<T> setCurrent(long current) {
this.current = current;
return this;
}
/** @deprecated */
@Deprecated
@Nullable
public String[] ascs() {
return CollectionUtils.isNotEmpty(this.orders) ? this.mapOrderToArray(OrderItem::isAsc) : null;
}
//orders是列表名称,放的是OrderItem类型对象
private String[] mapOrderToArray(Predicate<OrderItem> filter) {
List<String> columns = new ArrayList(this.orders.size()); //列表长度数组
this.orders.forEach((i) -> { //遍历列表,i代表orderItem
if (filter.test(i)) {
columns.add(i.getColumn()); //将字段名称加入列表中
}
});
return (String[])columns.toArray(new String[0]);
}
private void removeOrder(Predicate<OrderItem> filter) {
for(int i = this.orders.size() - 1; i >= 0; --i) {
if (filter.test(this.orders.get(i))) {
this.orders.remove(i);
}
}
}
public Page<T> addOrder(OrderItem... items) {
this.orders.addAll(Arrays.asList(items));
return this;
}
/** @deprecated */
@Deprecated
public Page<T> setAscs(List<String> ascs) {
return CollectionUtils.isNotEmpty(ascs) ? this.setAsc((String[])ascs.toArray(new String[0])) : this;
}
/** @deprecated */
@Deprecated
public Page<T> setAsc(String... ascs) {
this.removeOrder(OrderItem::isAsc);
String[] var2 = ascs;
int var3 = ascs.length;
for(int var4 = 0; var4 < var3; ++var4) {
String s = var2[var4];
this.addOrder(OrderItem.asc(s));
}
return this;
}
/** @deprecated */
@Deprecated
public String[] descs() {
return this.mapOrderToArray((i) -> {
return !i.isAsc();
});
}
/** @deprecated */
@Deprecated
public Page<T> setDescs(List<String> descs) {
if (CollectionUtils.isNotEmpty(descs)) {
this.removeOrder((item) -> {
return !item.isAsc();
});
Iterator var2 = descs.iterator();
while(var2.hasNext()) {
String s = (String)var2.next();
this.addOrder(OrderItem.desc(s));
}
}
return this;
}
/** @deprecated */
@Deprecated
public Page<T> setDesc(String... descs) {
this.setDescs(Arrays.asList(descs));
return this;
}
public List<OrderItem> orders() {
return this.getOrders();
}
public List<OrderItem> getOrders() {
return this.orders;
}
public void setOrders(List<OrderItem> orders) {
this.orders = orders;
}
public boolean optimizeCountSql() {
return this.optimizeCountSql;
}
public boolean isSearchCount() {
return this.total < 0L ? false : this.isSearchCount;
}
public Page<T> setSearchCount(boolean isSearchCount) {
this.isSearchCount = isSearchCount;
return this;
}
public Page<T> setOptimizeCountSql(boolean optimizeCountSql) {
this.optimizeCountSql = optimizeCountSql;
return this;
}
}
- list.toArray(new String[]) ,将ArrayList装换成字符串数组