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