Java逻辑分页实现类:LogicPageUtil.java
package com.util.common.utils;
import java.util.ArrayList;
import java.util.List;
/**
* 逻辑分页工具类
*/
public class LogicPageUtil<T> {
/**
* 当前页吗
*/
private Long currPage=1L;
/**
* 每页显示的数量
*/
private Long pageSize=10L;
/**
* 总页数
*/
private Long totalPage=1L;
/**
* 总条数
*/
private Long totalCount=0L;
/**
* 分页数据
*/
private List<T> records=new ArrayList<>();
private static final Long pageSizeDefault=10L;
public void setTotalCountByTotalDataCount(){
if(this.totalCount==0L){
this.totalPage=0L;
}else if(this.totalCount%this.pageSize==0){
this.totalPage=this.totalCount/this.pageSize;
}else if(this.totalCount%this.pageSize!=0){
this.totalPage=this.totalCount/this.pageSize+1;
}
}
public Long getCurrPage() {
return currPage;
}
public void setCurrPage(Long currPage) {
this.currPage = currPage;
}
public Long getPageSize() {
return pageSize;
}
public void setPageSize(Long pageSize) {
this.pageSize = pageSize;
}
public Long getTotalPage() {
return totalPage;
}
public void setTotalPage(Long totalPage) {
this.totalPage = totalPage;
}
public Long getTotalCount() {
return totalCount;
}
public void setTotalCount(Long totalCount) {
this.totalCount = totalCount;
}
public List<T> getRecords() {
return records;
}
public void setRecords(List<T> records) {
this.records = records;
}
public static <T> LogicPageUtil<T> getPage(Long limit, Long page, List<T> list) {
if (null== list || list.isEmpty()){
return new LogicPageUtil<T>();
}
if(limit==null || limit==0){
limit= pageSizeDefault;
}
if(page==null || page==0)
page=1L;
int currentLimit=Integer.parseInt(limit.toString());
int currentPage=Integer.parseInt(page.toString());
LogicPageUtil<T> pageUtil=new LogicPageUtil<>();
Integer totalCount=list.size(); //总数据
int startPage=(currentPage-1)*currentLimit; //开始数据 (1-1)*10=0 (2-1)*10=10
int endPage=currentPage*currentLimit; //结束数据 1*10=10 2*10=20
List<T> documentsList=new ArrayList<>(); //分页数据
for(int i=startPage;i<totalCount;i++){
if(i == endPage){ //到结束数据
break;
}
documentsList.add(list.get(i));
}
pageUtil.setCurrPage(page); //当前页码
pageUtil.setPageSize(limit); //每页数据
pageUtil.setTotalCount(Long.parseLong(totalCount.toString())); //总数据
pageUtil.setTotalCountByTotalDataCount(); //总页数
pageUtil.setRecords(documentsList);
//分页的数据
return pageUtil;
}
}
具体使用:
List<OutSourceViewDto> ret = new ArrayList();
// ret为处理之后的数据,此处略过
return LogicPageUtil.getPage(limit1.longValue(),page1.longValue(),ret);