内存分页法

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

解决方案:内存分页法

在内存筛选后手动实现分页逻辑,保证返回数量与请求的 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条)
相关推荐
ly76892 小时前
PostgreSQL 备份恢复策略:pg_basebackup、WAL 归档与 PITR 在企业 Java 系统中的落地
java·数据库·postgresql·pitr·pg_basebackup·wal 归档
小羊没烦恼!3 小时前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
注塑机数据采集联网3 小时前
如何解决注塑机数据采集联网对接MES系统数据WiFi传输数据不稳问题
大数据·数据库·物联网·数据挖掘·数据分析
黄俊懿3 小时前
【架构师从入门到进阶】第六章:服务集群优化——第八节:线程数公式
java·服务器·数据库·分布式·性能优化·架构·系统架构
geovindu3 小时前
sql: JSON and XML Data Handling in SQL using mysql 9.0
数据库·sql·mysql·数据库开发
hackchen4 小时前
LangChain 学习第 3 课 - 输出解析器(Output Parser)
数据库·学习·langchain
Mortalbreeze4 小时前
MySQL 基础篇(九):从 B+ 树到索引优化,全面理解 MySQL 索引
数据库·mysql
泡海椒4 小时前
JQuick-SQL SELECT 投影:字段、别名与表达式查询
数据库·sql
猫咪很可爱4 小时前
mysqldump 失败常见场景
数据库·sql·mysql
大明二代4 小时前
从零构建 Mastra RAG MVP:DeepSeek、SiliconFlow 与 PostgreSQL/pgvector 实战
javascript·数据库·人工智能