list转PageMoel

list转PageMoel

分页的最底层就是:若要展示第二页的五个数据,就只取list集合的第6~10个数据,所有的方法都是以这个为底层,只不过进行了封装然后加上了不同的算法。

通用方法
//LIST转page函数
public <T> Page<T> listConvertToPage(List<T> list, Pageable pageable) {
    // 当前页第一条数据在List中的位置
    int start = (int)pageable.getOffset();
    // 当前页最后一条数据在List中的位置
    int end = (start + pageable.getPageSize()) > list.size() ? list.size() : ( start + pageable.getPageSize());
    // 配置分页数据
    return new PageImpl<T>(list.subList(start, end), pageable, list.size());
}
PageRequest pageRequest = PageRequest.of(pageNo, pageSize);
Page<OrgListVO> orgListVOS = listConvertToPage(result, pageRequest);    //这里的result就是需要进行分页的list


PageModel pageModel = new PageModel();
pageModel.setTotal(orgListVOS.getSize());
pageModel.setPageNo(pageNo);
pageModel.setPageSize(pageSize);
pageModel.setRows(orgListVOS.getContent());
return pageModel;
实战代码

现有一个东拼西凑变成的List result,

现需要将它分页展示


    /**
     * 获取组织机构列表
     *
     * @param status
     * @param keyWords
     * @param sysCode
     * @return
     */
    @Override
    public PageModel orgListByStatusAndKey(String status, String keyWords, String sysCode, String orgCode, Integer pageNo, Integer pageSize) {
        //当orgCode不为空的情况下
        List<OrgListVO> result = new ArrayList<>();
        if (!StringUtils.isEmpty(orgCode)) {
            result = wuhuFindOrgBySysAndOrgCode(sysCode, orgCode);}
            //orgCode为空的情况下
        } else {
            result = orgMapper.orgListByStatusAndKey(status, keyWords, null);
        }


        //list转Page
        PageRequest pageRequest = PageRequest.of(pageNo, pageSize);
        Page<OrgListVO> orgListVOS = listConvertToPage(result, pageRequest);


        PageModel pageModel = new PageModel();
        pageModel.setTotal(orgListVOS.getSize());
        pageModel.setPageNo(pageNo);
        pageModel.setPageSize(pageSize);
        pageModel.setRows(orgListVOS.getContent());
        return pageModel;
    }


    //LIST转page函数
    public <T> Page<T> listConvertToPage(List<T> list, Pageable pageable) {
        // 当前页第一条数据在List中的位置
        int start = (int) pageable.getOffset();
        // 当前页最后一条数据在List中的位置
        int end = (start + pageable.getPageSize()) > list.size() ? list.size() : (start + pageable.getPageSize());
        // 配置分页数据
        return new PageImpl<T>(list.subList(start, end), pageable, list.size());
    }
总结:

你要知道自己为啥不会:

  1. 首先是看到这个代码就不是很懂,但这个其实也就是一个ListSub(begin,end)
  2. 在mybatis没出来的时候,别人是如何进行分页的?

不还是将一个List集合进行分割,然后进行展示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值