使用场景:
跨库分页 分批处理(每批1000条)使用姿势:
/** * 自定义分页 * * @param list * @param pageNum * @param pageSize * @return com.github.pagehelper.PageInfo<T> * @author xx * @date 2019/12/30 12:42 */ public <T> PageInfo<T> customPaging(List<T> list,int pageNum,int pageSize){ if(CollectionUtils.isEmpty(list)){ list = Collections.EMPTY_LIST; } //分页参数合理化 pageNum = pageNum <= 0 ? 1 : pageNum; pageSize = pageSize <= 0 ? 10 : pageSize; //获取总条数 int total = list.size(); //获取页码总数 int pages = total == 0 ? 1 : (total % pageSize == 0 ? total / pageSize : total / pageSize + 1); //分页参数合理化 pageNum = pageNum > pages ? pages : pageNum; List<T> subList; if (total != 0 && total <= pageNum * pageSize) { subList = list.subList((pageNum - 1) * pageSize, total); } else if (total != 0 && total > pageNum * pageSize) { subList = list.subList((pageNum - 1) * pageSize, pageNum * pageSize); } else { subList = Collections.EMPTY_LIST; } //返回pageInfo PageInfo<T> pageInfo = new PageInfo<>(); pageInfo.setList(subList); pageInfo.setTotal(total); pageInfo.setPageNum(pageNum); pageInfo.setPageSize(pageSize); pageInfo.setPages(pages); //维护分页相关四个字段 boolean isFirstPage = pageNum == 1; boolean isLastPage = pageNum == pages || pages == 0; boolean hasPreviousPage = pageNum > 1; boolean hasNextPage = pageNum < pages; pageInfo.setIsFirstPage(isFirstPage); pageInfo.setIsLastPage(isLastPage); pageInfo.setHasPreviousPage(hasPreviousPage); pageInfo.setHasNextPage(hasNextPage); return pageInfo; }