逻辑分页工具类

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);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值