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();
}
相关推荐
不听话坏4 小时前
Ignition篇(下 一) 动态执行前的事情
开发语言·前端·javascript
likeyi074 小时前
require 和 import的区别
开发语言·前端
咖啡八杯4 小时前
GoF设计模式——迭代器模式
java·后端·设计模式·迭代器模式
远离UE44 小时前
UE5 compute shader 原子加
开发语言·c++·ue5
C+-C资深大佬4 小时前
C++ 显式类型转换详解:static_cast、dynamic_cast、const_cast、reinterpret_cast
开发语言·c++
AIGS0014 小时前
企业AI落地的关键认知:向量空间JBoltAI的本体语义平台
java·人工智能·人工智能ai大模型应用
KaMeidebaby5 小时前
卡梅德生物技术快报|抗体亲和力成熟工业化调控新机制:差异性浆细胞增殖工艺优化思路
java·开发语言·人工智能·算法·机器学习·架构·spark
luj_17686 小时前
心形曲线轨迹控制三大关键技术
c语言·开发语言·c++·经验分享·算法
Mininglamp_27186 小时前
Claude Code 封禁中国开发者之后:本地 AI 编程工具的替代方案实测
开发语言·人工智能·windows·开源软件·ai-native
思麟呀7 小时前
C++17(三)if constexpr+折叠表达式
开发语言·c++