使用stream的skip方法进行分页处理

前言

在日常开发过程中,将查询的数据进行分页处理是非常常见的需求,而有时候 PageHelper的 startPage 方法对查询数据进行分页后,我们需要对这数据集进行再处理,而导致分页数据丢失一部分,只能查询第一页的数据。所以我们可以先做业务处理得到数据集,最终使用 Java 8 的 stream 的 skip 方法进行分页处理。

一、业务代码

public PageInfo<Object> finishedTask(QueryCondition condition) {
    // 当前页
    int pageNum = condition.getPage();
    // 当前数量
    int pageSize = condition.getPageSize();
    // 数据集合
    List<Object> list = queryByCondition(condition);
    // 数据总数
    int total = list.size();
    // 使用stream的skip方法跳过实现
    List<Object> pageList = list.stream().skip((pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
    PageInfo<Object> pageInfo = new PageInfo<>(pageList);
    pageInfo.setPageNum(pageNum);
    pageInfo.setPageSize(pageSize);
    pageInfo.setPages(total / pageSize + 1);
    pageInfo.setTotal(total);
    return pageInfo;
}

你可能感兴趣的:(Java,基础,java)