1.原因
工作中有的時候我們要處理的分頁是無法全部用數據庫去處理的,因為有些業務數據需要計算,所以我們需要把數據拿到程序中去分頁
2.代碼
//前端傳入分頁參數
Pageable pageable = new Pageable
pageable.setPageNum(0);
pageable.setPageSize(20);
List<XueClazz> xueClazzList = new ArrayList<>();
//分頁
Integer totalNum = xueClazzeList.size();
//默認從零分頁,這里要考慮這種情況,下面要計算。
int pageNum = pageable.getPageNumber() + 1;
int pageSize = pageable.getPageSize();
Integer totalPage = 0;
if (totalNum > 0) {
totalPage = totalNum % pageSize == 0 ? totalNum / pageSize : totalNum / pageSize + 1;
}
if (pageNum > totalPage) {
pageNum = totalPage;
}
int startPoint = (pageNum - 1) * pageSize;
int endPoint = startPoint + pageSize;
if (totalNum <= endPoint) {
endPoint = totalNum;
}
xueClazzeList = xueClazzeList.subList(startPoint, endPoint);
3.反思
在內存分頁的時候一定要考慮數據的數量,如果一次處理的數據條數太多會導致接口響應時間過長。所以在處理大數據量並且需要用到程序分頁的話,最好是用時間等條件去控制一下查詢的條數。