工具類
package com.gcs.util; import java.util.ArrayList; import java.util.List; public class PageUtil { /** * 手動分頁類 * @param datas * @param pageSize * @param pageNo * @param <T> * @return */ public static <T> List<T> getPageSizeDataForRelations(List<T> datas, int pageSize, int pageNo){ int startNum = (pageNo-1)* pageSize+1 ; //起始截取數據位置 if(startNum > datas.size()){ return null; } List<T> res = new ArrayList<>(); int rum = datas.size() - startNum; if(rum < 0){ return null; } if(rum == 0){ //說明正好是最后一個了 int index = datas.size() -1; res.add(datas.get(index)); return res; } if(rum / pageSize >= 1){ //剩下的數據還夠1頁,返回整頁的數據 for(int i=startNum;i<startNum + pageSize;i++){ //截取從startNum開始的數據 res.add(datas.get(i-1)); } return res; }else if((rum / pageSize == 0) && rum > 0){ //不夠一頁,直接返回剩下數據 for(int j = startNum ;j<=datas.size();j++){ res.add(datas.get(j-1)); } return res; }else{ return null; } } }
使用
//獲取結果集 List<Instructions> list = service.getInstList(userId, taskId, type, status, instName, condition); //使用工具類得到分頁后的結果集 List<Instructions> data = PageUtil.getPageSizeDataForRelations(list, pageSize, pageIndex); Map<String,Object> map = new HashMap<>(); int size = list.size();//總條數 //總頁數 int totlePage = size/pageSize;//取整 int i = size % pageSize;//取余 if(i > 0){ totlePage+=1; } map.put("data",data);//結果集 map.put("pages",totlePage);//總頁數 map.put("pageNum",pageIndex);//頁碼 map.put("pageSize",pageSize);//每頁顯示條數 map.put("total",size);//總條數 return Result.success(map);