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();
}
相关推荐
GR2342344 小时前
2025年影视仓TV+手机官方版 内置地址源支持高清直播
java·智能手机·软件
kylezhao20194 小时前
C# 中的 SOLID 五大设计原则
开发语言·c#
程序员清风4 小时前
北京回长沙了,简单谈谈感受!
java·后端·面试
何中应5 小时前
请求头设置没有生效
java·后端
凡人叶枫5 小时前
C++中输入、输出和文件操作详解(Linux实战版)| 从基础到项目落地,避坑指南
linux·服务器·c语言·开发语言·c++
亓才孓5 小时前
[JDBC]批处理
java
春日见5 小时前
车辆动力学:前后轮车轴
java·开发语言·驱动开发·docker·计算机外设
锐意无限5 小时前
Swift 扩展归纳--- UIView
开发语言·ios·swift
低代码布道师5 小时前
Next.js 16 全栈实战(一):从零打造“教培管家”系统——环境与脚手架搭建
开发语言·javascript·ecmascript
宋小黑5 小时前
JDK 6到25 全版本网盘合集 (Windows + Mac + Linux)
java·后端