天天看點

手動PageInfo分頁

項目中有時候遇到list多種來源,不能使用PageInfo在查詢資料庫時分頁,需要查詢全部之後,手動分頁。

//手動分頁的分割起始下标
        Integer fromIndex = 0;
        //手動分頁的分割結尾下标
        Integer toIndex = 0;
        Integer total = arrayList.size();
        if(total/pageSize == 0 && total%pageSize > 0){
            fromIndex = 0;
            toIndex = total;
        }else{
            if(total/pageSize >= 1 && total % pageSize >= 0){
                fromIndex = pageSize * (pageNum-1);
                if(pageSize * pageNum >= total){
                    toIndex = total;
                }else{
                    toIndex = pageSize * pageNum;
                }
            }
        }

        //開啟分頁
        PageHelper.startPage(pageNum, pageSize);
        List<ModelStorageByUserAndType> list = arrayList.subList(fromIndex, toIndex);
        PageInfo<ModelStorageByUserAndType> pageInfo = new PageInfo<>(list);
        pageInfo.setTotal(total);
        //非常重要,作用是手動清理ThreadLocal存儲的分頁參,防止分頁失效,參數亂套的情況
        PageHelper.clearPage();