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