内存分页法

现在有个场景,页面需要分页处理,但是后端在查询完数据库后又会进行筛选,就会导致后端的查询数目跟请求的每页条数是不一样。

解决方案:内存分页法

在内存筛选后手动实现分页逻辑,保证返回数量与请求的 pageSize 一致:

复制代码
@Override
public JSONObject checkByLabelType(XXXDTO req) {

    JSONObject jsonObject = new JSONObject();

    // 1. 执行原有查询和筛选逻辑(得到全部已筛选数据)
    List<XXXVO> filteredList = getFullFilteredList(req); 

    // 2. 手动分页处理
    int pageNum = req.getPageNum() != null ? req.getPageNum() : 1;
    int pageSize = req.getPageSize() != null ? req.getPageSize() : 10;
    int start = (pageNum - 1) * pageSize;
    
    // 3. 边界检查
    if (start >= filteredList.size()) {
        return Collections.emptyList();
    }
    int end = Math.min(start + pageSize, filteredList.size());
    

    // 4. 返回分页后的子列表
    List<XXXVO> pageList = filteredList.subList(start, end);
    jsonObject.put("total", filteredList.size());
    jsonObject.put("rows", pageList);
    return jsonObject;
}

private List<XXXVO> getFullFilteredList(XXXDTO req) {
    // 这里放入原有的全部筛选逻辑(包括设备过滤、标签过滤、时间排序等)
    // 返回的是完成所有内存筛选后的完整列表
}
方案 优点 缺点 适用场景
内存分页 实现简单,数据精准 内存压力大 数据量小 (<1000条)
相关推荐
合作小小程序员小小店7 分钟前
桌面开发,超市管理系统开发,基于C#,winform,sql server数据库
开发语言·数据库·sql·microsoft·sqlserver·c#
quweiie14 分钟前
thinkphp8.0链接SQL SERVER2022数据库
数据库·sqlserver·thinkphp
Databend1 小时前
如何打造AI时代的数据基石 | Databend Meetup 上海站
数据库
老华带你飞1 小时前
海产品销售系统|海鲜商城购物|基于SprinBoot+vue的海鲜商城系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·毕设·海鲜商城购物系统
合作小小程序员小小店2 小时前
桌面开发,在线%超市销售管理%系统,基于vs2022,c#,winform,sql server数据
开发语言·数据库·microsoft·c#
SelectDB2 小时前
字节跳动:Apache Doris + AI 一站式融合数据引擎的探索与实践
数据库·apache
IvorySQL2 小时前
PostgreSQL 18 - 时间约束 (Temporal Constraints)
数据库·postgresql·开源
q***61412 小时前
从MySQL迁移到PostgreSQL的完整指南
数据库·mysql·postgresql
N***73853 小时前
SQL锁机制
java·数据库·sql
小羊在奋斗3 小时前
MySQL表的约束:从基础到核心(附场景+案例)
android·数据库·mysql