list自定义分页

/**
 * 自定义分页
 *
 * @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;
}

猜你喜欢

转载自blog.csdn.net/xx897115293/article/details/109216896