栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

JAVA 内存/逻辑分页

JAVA 内存/逻辑分页

@JAVA 内存/逻辑分页

适用背景

由于项目需求,需查询活动列表名单,并统计活动对应用户数。由于数据库表结构设计,活动基本信息存储在一张小数据量表,活动对应的用户信息存储在大数据量表,直接left join 并SUM的话,性能会急剧下滑,因此采取先拉取活动列表,再循环统计活动用户数的方式。而为了配合新增需求,剔除不满足条件的活动(如用户数为0),再返回前台;需要改变原有limit offset的分页方式,否则会出现分页,total计数不准的情况,查阅资料后发现物理分页包括pageHelper等工具,都是在dao层已经分页并返回,无法适配业务筛选条件。因此改为逻辑内存分页,实现起来的代码也很简单:

public static List rowBounds(int pageNum, int pageSize, List list) {
        pageNum = Math.max(pageNum, 0);
        // 默认至少返回5行
        pageSize = Math.max(pageSize, 5);
        int startRow = 0;
        int endRow = 0;
        if (list == null || list.size() == 0) {
            return list;
        }
        int totalCount = list.size();
        startRow = pageNum > 0 ? pageNum * pageSize : 0;
        endRow = startRow + pageSize;
        endRow = Math.min(endRow, totalCount);
        list = list.subList(startRow, endRow);
        return list;
    }

记录一下这份代码,这种场景非常常见,不失为一种解决方法

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/760982.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号