内存分页法

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

解决方案:内存分页法

在内存筛选后手动实现分页逻辑,保证返回数量与请求的 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条)
相关推荐
电魂泡哥4 小时前
SQL出现filesort 一定慢吗
数据库·sql
muddjsv6 小时前
大中小型企业数据层配置规模分析与选型指南
数据库
Runawayliquor6 小时前
opbase:CANN 所有算子的公共地基
大数据·数据库·人工智能·算法
yangshicong7 小时前
第11章:结构化输出与数据提取 —— 让 AI 直接返回你想要的数据格式
数据库·人工智能·redis·python·langchain·ai编程
chimchim667 小时前
pg dblink使用查询
数据库
Java面试题总结8 小时前
java高频面试题(2026最新)
java·开发语言·jvm·数据库·spring·缓存
绝知此事8 小时前
【算法突围 02】树形结构与数据库索引:树形结构与数据库索引:从 BST 到 B+ 树的演化与 MySQL 优化
数据库·mysql·算法·面试·b+树
吴可可1239 小时前
用Teigha修改并保存CAD文件
数据库·算法·c#
yuzhiboyouye10 小时前
内连接,左连接,右连接怎么区别开来?
数据库
铭毅天下10 小时前
Easysearch 版本进化全图——从 ES 国产替代到 AI Native 搜索数据库
大数据·数据库·人工智能·elasticsearch·搜索引擎