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