自己写的逻辑分页,如果没有Lombook插件,请自己生成getter and setter
package com.kando.harass.dto;
/**
* @author: lzl
* @description:
* @createTime: 2020/11/5 0005
*/
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
public class Page<T> {
//数据
private List<T> list;
//当前页
private int page;
//当前页条数
private int limit;
//总页数
private int total;
//最后一页页码
private int lastPage;
public Page(int page, int limit, List<T> list) {
if (list.isEmpty()) {
this.list = new ArrayList<>();
return;
}
if (limit == 0) {
throw new RuntimeException("limit不能为0");
}
this.limit = limit;
this.page = page;
this.total = list.size();
if (total % limit == 0) {
this.lastPage = total / limit;
} else {
lastPage = total / limit + 1;
}
if (page > lastPage) {
throw new RuntimeException("当前页超过了最大页");
}
this.list = init(list);
}
//对传入的数据分页
public List<T> init(List<T> list) {
List<T> result = new ArrayList<>();
try {
//不是最后一页
if (page != lastPage) {
result.addAll(list.subList((page - 1) * limit, page * limit));
} else {
if (total % limit == 0) {
result.addAll(list.subList((lastPage - 1) * limit, ((lastPage) * limit)));
} else {
result.addAll(list.subList((lastPage - 1) * limit, ((lastPage - 1) * limit) + (total % limit)));
}
}
return result;
} catch (IllegalArgumentException e) {
return result;
}
}
}