java 基础方法 list分页

新增一个list 泛型分类方法

hutools没这个方法, mybatis 里面的方法不好用

故新增此方法

复制代码
package com.common.base.util.page;

import lombok.Data;

import java.util.List;

/**
 * @className: VoPage
 * @description: list分页
 * @author: chenyuanlong
 * @date: 2025年6月16日 0016 上午 11:24:41
 **/
@Data
public class VoPage<T>{

   private Integer pageAll;

   private Integer pageSize;

   private List<VoPageOne<T>>  pageDatas;
}
复制代码
package com.common.base.util.page;

import lombok.Data;

import java.util.List;

/**
 * @className: VoPageOne
 * @description: 每页
 * @author: chenyuanlong
 * @date: 2025年6月16日 0016 上午 11:28:41
 **/
@Data
public class VoPageOne<T> {

    private Integer pageCur;

    private List<T> pageDatas;


}
复制代码
package com.common.base.util.page;

import com.common.base.util.json.UtilJsonFast;
import com.common.base.util.number.UtilBigDecimal;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * 分页计算  list分批返回
 * @author chenyuanlong
 * @date 2024/9/13 11:18
 */
public class UtilPageList<T> {

    /**
     * list 分页返回
     * @param allDatas
     * @return
     */
    public  VoPage<T> listPage(List<T> allDatas, Integer pageSize){
        VoPage<T> re=new VoPage<>();

        List<VoPageOne<T>>  pageDatas=new ArrayList<>();

        // 总页数
        int pageAll= UtilBigDecimal.divideROUND_UP(
                new BigDecimal(allDatas.size()),
                new BigDecimal(pageSize));
        re.setPageAll(pageAll);
        re.setPageSize(pageSize);

        // 遍历设置每页
        for(int thisPage=0;thisPage<pageAll;thisPage++){
            VoPageOne voPageOne=new VoPageOne();

            voPageOne.setPageCur(thisPage+1);
            List<T> voPageThis=new ArrayList<>();
            for(int j=0;j<pageSize;j++){
                int posi=thisPage*pageSize+j;
                if(posi<allDatas.size()){
                    T dataOne=allDatas.get(posi);
                    voPageThis.add(dataOne);
                }
            }
            voPageOne.setPageDatas(voPageThis);
            pageDatas.add(voPageOne);
        }
        re.setPageDatas(pageDatas);
        return re;
    }


}

测试此方法

复制代码
package page;

import cn.hutool.core.util.PageUtil;
import com.common.base.util.page.UtilPageList;
import com.common.base.util.page.VoPage;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * @className: VoPageTest
 * @description: 分页测试
 * @author: chenyuanlong
 * @date: 2025年6月16日 0016 下午 01:22:22
 **/
@Data
public class VoPageTest {

    private String pId;

    private String pName;


    /**
     * 测试分页类
     */
    public static void pTest(){
        List<VoPageTest>  allDatas=new ArrayList<>();
        VoPageTest voPageTest1=new VoPageTest();
        voPageTest1.setPId("001");
        voPageTest1.setPName("1号位置");
        allDatas.add(voPageTest1);

        VoPageTest voPageTest2=new VoPageTest();
        voPageTest2.setPId("002");
        voPageTest2.setPName("2号位置");
        allDatas.add(voPageTest2);

        VoPageTest voPageTest3=new VoPageTest();
        voPageTest3.setPId("003");
        voPageTest3.setPName("3号位置");
        allDatas.add(voPageTest3);

        VoPageTest voPageTest4=new VoPageTest();
        voPageTest4.setPId("004");
        voPageTest4.setPName("4号位置");
        allDatas.add(voPageTest4);

        VoPageTest voPageTest5=new VoPageTest();
        voPageTest5.setPId("005");
        voPageTest5.setPName("5号位置");
        allDatas.add(voPageTest5);

        VoPage<VoPageTest> re=new UtilPageList<VoPageTest>().listPage(allDatas,2);
        System.out.println(re);
    }


    public static void main(String[] args) {
        VoPageTest.pTest();
    }
}

用到的工具类里面的方法

复制代码
/**
 * 相除,结果保留整数部分(整型)
 * @param divided  被除数
 * @param divide   除数
 * @return 相除后的结果
 */
public static int divideROUND_UP(BigDecimal divided, BigDecimal divide) {
    return divided.divide(divide, 0, BigDecimal.ROUND_UP).intValue();
}
相关推荐
小途软件11 小时前
用于机器人电池电量预测的Sarsa强化学习混合集成方法
java·人工智能·pytorch·python·深度学习·语言模型
alonewolf_9911 小时前
Spring MVC启动与请求处理全流程解析:从DispatcherServlet到HandlerAdapter
java·spring·mvc
Echo娴11 小时前
Spring的开发步骤
java·后端·spring
吴声子夜歌12 小时前
Java数据结构与算法——基本数学问题
java·开发语言·windows
wanglei20070812 小时前
生产者消费者
开发语言·python
_UMR_12 小时前
springboot集成Jasypt实现配置文件启动时自动解密-ENC
java·spring boot·后端
程序员小假13 小时前
我们来说说 Cookie、Session、Token、JWT
java·后端
leo__52013 小时前
基于菲涅耳衍射积分的空心高斯光束传输数值模拟(MATLAB实现)
开发语言·matlab
昵称已被吞噬~‘(*@﹏@*)’~13 小时前
【RL+空战】学习记录03:基于JSBSim构造简易空空导弹模型,并结合python接口调用测试
开发语言·人工智能·python·学习·深度强化学习·jsbsim·空战
短剑重铸之日13 小时前
《SpringBoot4.0初识》第一篇:前瞻与思想
java·开发语言·后端·spring·springboot4.0