java-分页查询

背景:查询的数据在一张表里面/或通过自定义sql连表查询出来的结果都可以通过普通分页/自定义sql分页进行实现

需要解决的问题:但对统计的数据无法直接进行分页查询,需要对最终的查询结果进行分页处理

//根据条件进行查询--普通分页
@Override
    public MyPage<Name> queryAllName(Integer currentPage, Integer pageSize) {
        Page<Name> page = new Page<>(currentPage, pageSize);
        QueryWrapper<Name> queryWrapper = new QueryWrapper<>();
        ...
        ...
        
        IPage<Name> iPage = baseMapper.selectPage(page, queryWrapper);
        return new MyPage<>(iPage.getTotal(), iPage.getRecords());
    }
//对查询结果进行分页--特殊处理
@Overrode
    public MyPage<Name> queryAllName(Integer currentPage, Integer pageSize) {
    Mypage<Name> = dto = new MyPage<>();
        List<Name> gameList = new ArrayList<>();
        ...
        ...
        //结果分页
        List<List<Name>> averageList = ListUtils.averageAssign(gameList, PageEnum.SIZE_20.getSize());
        
        //设置值
        List<Name> resultPage = averageList.get(currentPage-1);
       
        dto.setList(resultPage);
        return dto;
    }
//工具类
public class ListUtils<T> {
    /**
     * 将list集合按n个数划分
     *
     * @param source 源集合
     * @param n      划分个数
     * @param <T>    范型
     * @return 目标集合
     */
    public static <T> List<List<T>> averageAssign(List<T> source, int n) {
        if (n <= 0) {
            return Collections.emptyList();
        }
        List<List<T>> list = new ArrayList<>();
        int sourceSize = source.size();

        int finalNum = n;
        for (int i = 0; i < sourceSize; i += n) {
            if (i + n > sourceSize) {
                finalNum = sourceSize - i;
            }
            list.add(source.subList(i, i + finalNum));
        }
        return list;
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值