根据传入的list数据集进行分页。只是一个工具类。
得先有一个page对象。
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonFormat.Shape;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.List;
@JsonFormat(
shape = Shape.OBJECT
)
public class Page<E> extends AbstractList<E> {
private int totalPages;
private long totalElements;
private int numberOfElements;
private int size;
private int number;
private List<E> content;
public Page() {
this.content = new ArrayList();
}
public Page(List<E> content, PageInfo pageInfo, long total) {
this.content = content;
this.number = pageInfo.getPage();
this.size = pageInfo.getSize();
this.totalElements = total;
this.totalPages = (int)(total - 1L) / this.size + 1;
this.numberOfElements = content.size();
}
}
构建page。
import io.choerodon.core.domain.Page;
import org.apache.commons.collections.CollectionUtils;
import java.util.List;
/**
* pageIndex:第几页
* pageSize:每页的条数
* list:被分割的数据
*/
public class HandlePageHelper {
public static Page<?> listPage(Integer pageIndex, Integer pageSize, List list) {
if(CollectionUtils.isEmpty(list)){
return new Page<>();
}
if (pageIndex.equals(0)) {
pageIndex = 1;
}
int totalRecord = list.size(); // 一共多少条记录
Integer totalPage = totalRecord % pageSize; // 一共多少页
if (totalPage > 0) {
totalPage = totalRecord / pageSize + 1;
} else {
totalPage = totalRecord / pageSize;
}
Integer currentPage = totalPage < pageIndex ? totalPage : pageIndex;// 当前第几页数据
int fromIndex = (pageSize * (currentPage - 1));// 起始索引
int toIndex = pageSize * currentPage > totalRecord ? totalRecord : (pageSize * currentPage);// 结束索引
Page<Object> page = new Page<>();
list.subList(fromIndex, toIndex);
page.setContent(list.subList(fromIndex, toIndex));
page.setTotalPages(totalPage);
page.setTotalElements(totalRecord);
page.setNumber(currentPage);
page.setSize(pageSize);
return page;
}
}