内存分页法

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

解决方案:内存分页法

在内存筛选后手动实现分页逻辑,保证返回数量与请求的 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条)
相关推荐
xieliyu.7 小时前
MySQL 存储过程详解:概念、创建与删除全教程
开发语言·数据库·mysql
ttwuai7 小时前
AI 生成后台删除按钮后,MySQL 软删除和唯一索引怎么验
数据库·mysql·golang
张人玉8 小时前
基于 Vue 3 + ECharts + Express + SQLite 构建的新能源汽车销量数据分析与可视化平台——新能源汽车销量数据分析系统
数据库·vue.js·sqlite·echarts
笨笨饿10 小时前
#102_Codex无在VSCold无法打开
java·c语言·数据库·笔记
向夏威夷 梦断明暄10 小时前
从架构特点到功能缺陷,重新认识分析型分布式数据库
数据库·分布式·架构
不知疲倦的仄仄10 小时前
MySQL/Read View快照/MVCC/串行化
java·数据库·mysql
向夏威夷 梦断明暄10 小时前
C# 弃元模式:从语法糖到性能利器的深度解析
服务器·数据库·c#
糖果店的幽灵11 小时前
大模型测评DeepEval快速入门-RAG指标详解
数据库·人工智能·langgraph·大模型测评·deepeval
whn197711 小时前
oracle的节点2无法启动asm实例 提示PMON terminating the instance due to error 481
数据库·oracle·wpf