新增一个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();
}