内存分页法

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

解决方案:内存分页法

在内存筛选后手动实现分页逻辑,保证返回数量与请求的 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条)
相关推荐
日日行不惧千万里1 小时前
数据库故障排查指南
网络·数据库·oracle
神秘敲码人1 小时前
Django基础(二)Django 项目基础操作
数据库·笔记·django
程序员Bears2 小时前
电商后台管理系统:Django Admin深度定制实战指南
数据库·django·sqlite
TDengine (老段)2 小时前
TDengine 2025年产品路线图
大数据·数据库·动态规划·时序数据库·tdengine·涛思数据
Aurora_NeAr2 小时前
Redis设计与实现——分布式Redis
数据库·redis·分布式
bst@微胖子2 小时前
DeepSeek提示工程Prompt Engineering
java·数据库·prompt
xuyin12044 小时前
SQLite基础及优化
数据库·sqlite
Faith_xzc4 小时前
MySQL 迁移至 Doris 最佳实践方案
数据库·mysql·adb
ikun·4 小时前
MySQL高可用
数据库·mysql
Bug退退退1235 小时前
分析 redis 的 exists 命令有一个参数和多个参数的区别
数据库·redis·缓存