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();
}
相关推荐
龙腾AI白云2 分钟前
大模型-扩散模型(Diffusion Model)原理讲解(4)
开发语言
tuokuac11 分钟前
MVC的含义
java·mvc
为java加瓦18 分钟前
IO多路复用的两种触发机制:ET和LT触发机制。以及IO操作是异步的还是同步的理解
java·服务器·网络
_extraordinary_21 分钟前
Java SpringBoot(一)--- 下载Spring相关插件,创建一个Spring项目,创建项目出现的问题
java·spring boot·spring
爱吃小胖橘33 分钟前
Lua语法(2)
开发语言·unity·lua
聪明的笨猪猪35 分钟前
Java Spring “核心基础”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
_Power_Y35 分钟前
SSM面试题学习
java·开发语言·学习
不要再敲了1 小时前
Spring Security 完整使用指南
java·后端·spring
SccTsAxR1 小时前
[初学C语言]关于scanf和printf函数
c语言·开发语言·经验分享·笔记·其他
害恶细君1 小时前
【超详细】使用conda配置python的开发环境
开发语言·python·jupyter·pycharm·conda·ipython