内存分页法

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

解决方案:内存分页法

在内存筛选后手动实现分页逻辑,保证返回数量与请求的 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条)
相关推荐
lingggggaaaa14 分钟前
小迪安全v2023学习笔记(一百三十四讲)—— Windows权限提升篇&数据库篇&MySQL&MSSQL&Oracle&自动化项目
java·数据库·windows·笔记·学习·安全·网络安全
小光学长16 分钟前
基于Vue的保护动物信息管理系统r7zl6b88 (程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
一匹电信狗43 分钟前
【MySQL】数据库的相关操作
linux·运维·服务器·数据库·mysql·ubuntu·小程序
TDengine (老段)2 小时前
连接 TDengine 遇到报错 “failed to connect to server, reason: Connection refused” 怎么办?
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
李慕婉学姐3 小时前
Springboot黄河文化科普网站5q37v(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
Cabbage_acmer4 小时前
MySQL期中考试突击!
数据库·mysql
Lu Yao_4 小时前
Redis 缓存
数据库·redis·缓存
小桥流水人家哇4 小时前
性能测试单场景测试时,是设置并发读多个文件,还是设置不同的用户读不同的文件?
数据库·性能测试技巧
表示这么伤脑筋的题我不会4 小时前
Oracle 21C 部署ogg踩过的坑
数据库·oracle
你不是我我4 小时前
【Java 开发日记】MySQL 与 Redis 如何保证双写一致性?
数据库·redis·缓存