轉自:https://blog.csdn.net/zser567/article/details/105388029
問題背景:PageHelper的分頁只有在
PageHelper.startPage(pageNum,pageSize);
之后的數據庫查詢語句才起作用,原因是PageHelper的實現原理是在數據庫查詢過程中通過攔截器攔截處理。
在我當前的項目中,需要對本地已經緩存好的ArrayList進行分頁,減少數據庫操作。方法有兩種:
第一種:
重新自定義PageInfo類,能解決問題,但是比較繁瑣,不探究。
第二種:(推薦)
直接用PageHelper的類來實現,代碼如下:
1 //創建Page類 2 Page page = new Page(pageNum, pageSize); 3 //為Page類中的total屬性賦值 4 int total = CacheRegion.noticeList.size(); 5 page.setTotal(total); 6 //計算當前需要顯示的數據下標起始值 7 int startIndex = (pageNum - 1) * pageSize; 8 int endIndex = Math.min(startIndex + pageSize,total); 9 //從鏈表中截取需要顯示的子鏈表,並加入到Page 10 page.addAll(CacheRegion.noticeList.subList(startIndex,endIndex)); 11 //以Page創建PageInfo 12 PageInfo pageInfo = new PageInfo<>(page); 13 //將數據傳回前端 14 modelAndView.addObject("pageInfo", pageInfo);