使用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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值