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();
}
相关推荐
StackNoOverflow13 分钟前
Spring Security权限控制框架详解
java·数据库·sql
yaaakaaang17 分钟前
九、装饰器模式
java·装饰器模式
weixin_5134499619 分钟前
walk_these_ways项目学习记录第八篇(通过行为多样性 (MoB) 实现地形泛化)--策略网络
开发语言·人工智能·python·学习
d_dreamer23 分钟前
SeaTunnel推荐Maven版本
java·maven
飞Link23 分钟前
逆向兼容的桥梁:3to2 自动化降级工具实现全解析
运维·开发语言·python·自动化
曾阿伦32 分钟前
Python3 文件 (夹) 操作备忘录
开发语言·python
清心歌34 分钟前
记一次系统环境变量更改后在IDEA中无法读取新值的排查过程
java·后端·intellij-idea·idea
大尚来也37 分钟前
驾驭并发:.NET多线程编程的挑战与破局之道
java·前端·算法
dong__csdn40 分钟前
jdk添加信任证书
java·开发语言
hhcccchh1 小时前
1.1 HTML 语义化标签(header、nav、main、section、footer 等)
java·前端·html