查询到List后再进行分页(mybatis-plus

如果您需要首先获取符合条件的所有数据,然后在内存中进行筛选,以满足特定条件,而不是在数据库层面进行条件查询,您可以继续使用您的原始实现。但是,为了正确实现分页,您需要对分页结果进行调整。以下是一个可能的改进版本:

List<SysBeforeUser> sysBeforeUsers = baseMapper.selectList(sysBeforeUserQueryWrapper);
Page<SysBeforeUser> result = new Page<>(pageParam.getCurrent(), pageParam.getSize());List<SysBeforeUser> pageEnd = new ArrayList<>();if (!StringUtil.isEmpty(pageParam.getIsVip())) {for (SysBeforeUser sysBeforeUser : sysBeforeUsers) {if (sysBeforeUser.getIsVip().equals(pageParam.getIsVip())) {pageEnd.add(sysBeforeUser);}}result.setRecords(pageEnd.subList((int) result.offset(), Math.min((int) result.offset() + result.getSize(), pageEnd.size())));result.setTotal(pageEnd.size());
} else {result.setRecords(sysBeforeUsers.subList((int) result.offset(), Math.min((int) result.offset() + result.getSize(), sysBeforeUsers.size())));result.setTotal(sysBeforeUsers.size());
}return result;

在这里,使用了 subList 方法来截取符合分页条件的记录范围,并将其设置为 resultrecords 属性。请注意,由于 subList 的索引参数是基于列表的索引,因此需要将 result.offset() 强制转换为 int 类型。

虽然这种方法可以满足您的需求,但请注意,它在性能上可能不如在数据库层面进行分页查询,特别是在数据量较大的情况下。如果性能是关键考虑因素,建议尽量在数据库层面进行分页查询。

result.setRecords(pageEnd.subList(
(int) result.offset(),
Math.min((int) result.offset() + result.getSize(), pageEnd.size())
));

result.setRecords(sysBeforeUsers.subList(
(int) result.offset(),
Math.min((int) result.offset() + result.getSize(), sysBeforeUsers.size())
));是什么 意思?
这两行代码使用了 Java 中 List 接口的 subList 方法,用于获取原始列表的一个子列表。具体来说,这两行代码的目的是截取符合分页条件的记录范围,并将其设置为 result 对象的 records 属性,即将这个子列表作为查询结果返回。

让我解释一下这两行代码的具体含义:

  1. pageEnd.subList((int) result.offset(), Math.min((int) result.offset() + result.getSize(), pageEnd.size()))

    • pageEnd 是您根据条件筛选得到的 SysBeforeUser 列表。
    • result.offset() 返回当前分页的偏移量,即从哪一条记录开始。
    • Math.min((int) result.offset() + result.getSize(), pageEnd.size()) 确保截取的范围不超过 pageEnd 的实际大小。
    • 因此,这一行代码截取了 pageEnd 列表中,从 result.offset()Math.min((int) result.offset() + result.getSize(), pageEnd.size()) 的子列表,并将其设置为 resultrecords 属性。
  2. sysBeforeUsers.subList((int) result.offset(), Math.min((int) result.offset() + result.getSize(), sysBeforeUsers.size()))

    • sysBeforeUsers 是从数据库中查询得到的所有 SysBeforeUser 列表。
    • result.offset() 返回当前分页的偏移量,即从哪一条记录开始。
    • Math.min((int) result.offset() + result.getSize(), sysBeforeUsers.size()) 确保截取的范围不超过 sysBeforeUsers 的实际大小。
    • 因此,这一行代码截取了 sysBeforeUsers 列表中,从 result.offset()Math.min((int) result.offset() + result.getSize(), sysBeforeUsers.size()) 的子列表,并将其设置为 resultrecords 属性。

这两行代码的目的是为了根据分页信息,从完整的记录集中截取出当前页的记录,以便于设置到 result 对象中返回给调用者。
不过建议还是使用IService的page(page, wrapper)方法,this.page(E page, Wrapper queryWrapper):

default <E extends IPage<T>> E page(E page, Wrapper<T> queryWrapper) {return this.getBaseMapper().selectPage(page, queryWrapper);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/672992.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vagrant 虚拟机工具基本操作指南

Vagrant 虚拟机工具基本操作指南 ​#虚拟机 #​ ​#vargant#​ ​#ubuntu#​ ‍ 虚拟机virtualbox ,VMWare及WSL等大家都很了解了&#xff0c;那Vagrant是什么东西&#xff1f; 它是一组命令行工具&#xff0c;可以象Docker管理容器一样管理虚拟机&#xff0c;这样快速创…

鸿蒙OS导入项目报错不能运行 @ohos\hvigor\bin\hvigor.js‘

在自学HarmonyOS时&#xff0c;想在DevEco Studio导入官方示例代码&#xff1a;待办列表&#xff08;ArkTS&#xff09;报错 C:\Users\woods\Downloads\test01\ToDoListArkTS\node_modules\ohos\hvigor\bin\hvigor.js --mode module -p moduleentrydefault -p productdefault …

03-抓包_封包_协议_APP_小程序_PC应用_WEB应用

抓包_封包_协议_APP_小程序_PC应用_WEB应用 一、参考工具二、演示案例&#xff1a;2.1、WEB应用站点操作数据抓包-浏览器审查查看元素网络监听2.2、APP&小程序&PC抓包HTTP/S数据-Charles&Fiddler&Burpsuite2.3、程序进程&网络接口&其他协议抓包-WireSh…

《剑指 Offer》专项突破版 - 面试题 35 : 最小时间差(两种方法 + C++ 实现)

目录 前言 一、排序 二、数组 前言 题目链接&#xff1a;LCR 035. 最小时间差 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 给定一组范围在 00:00 至 23:59 的时间&#xff0c;求任意两个时间之间的最小时间差&#xff08;以分钟数表示&#xff09;。例如&…

YOLO部署实战(2):使用OpenCV优化视频转图片流程并设置帧数

在计算机视觉和图像处理领域&#xff0c;OpenCV是一个强大的开源库&#xff0c;它为处理图像和视频提供了丰富的工具和功能。本文将介绍如何使用OpenCV将视频文件转换为一系列图片&#xff0c;并演示如何通过设置转换的帧数来优化这一过程。 1 Win10配置OpenCV 在Windows操作…

数据结构与算法之美学习笔记:50 | 索引:如何在海量数据中快速查找某个数据?

目录 前言为什么需要索引&#xff1f;索引的需求定义构建索引常用的数据结构有哪些&#xff1f;总结引申 前言 本节课程思维导图&#xff1a; 在第 48 节中&#xff0c;我们讲了 MySQL 数据库索引的实现原理。MySQL 底层依赖的是 B 树这种数据结构。留言里有同学问我&#xff…

提示由于找不到msvcp120dll无法继续执行此代码怎么办

在计算机系统中&#xff0c;MSVCP120.dll是一个至关重要的动态链接库文件&#xff0c;它是Microsoft Visual C Redistributable Package的一部分&#xff0c;对于许多基于Windows的应用程序运行至关重要。当系统提示“msvcp120dll丢失”时&#xff0c;意味着该文件可能由于误删…

C++之RTTI实现原理

相关系列文章 C无锁队列的原理与实现 如何写出高质量的函数&#xff1f;快来学习这些coding技巧 从C容器中获取存储数据的类型 C之多层 if-else-if 结构优化(一) C之多层 if-else-if 结构优化(二) C之多层 if-else-if 结构优化(三) C之Pimpl惯用法 C之RTTI实现原理 目录 1.引言…

汇编笔记 01

小蒟蒻的汇编自学笔记&#xff0c;如有错误&#xff0c;望不吝赐教 文章目录 笔记编辑器&#xff0c;启动&#xff01;debug功能CS & IPmovaddsub汇编语言寄存器的英文全称中英对照表muldivandor 笔记 编辑器&#xff0c;启动&#xff01; 进入 debug 模式 debug功能 …

vue3-内置组件-KeepAlive

KeepAlive <KeepAlive> 是一个内置组件&#xff0c;它的功能是在多个组件间动态切换时缓存被移除的组件实例。 基本使用 默认情况下&#xff0c;一个组件实例在被替换掉后会被销毁。这会导致它丢失其中所有已变化的状态——当这个组件再一次被显示时&#xff0c;会创建…

【机器学习】机器学习流程之收集数据

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步…

类与对象(终章)——友元,内部类,匿名对象

这里写目录标题 1. 友元1.2 友元函数1.3 友元类 2. 内部类3.匿名对象 1. 友元 之前实现日期类我们实现输入输出流重载的时候就已经了解了友元的概念&#xff0c;我们今天正式走进友元&#xff0c;详细地学习友元的各种特点与性质。 关键字:friend 1.2 友元函数 友元函数在重载…

【SQL】力扣1571. 仓库经理

1571. 仓库经理 文章目录 【SQL】力扣1571. 仓库经理题目描述输入输出示例示例 1: 解题思路代码与算法步骤解析完整代码 复杂度分析总结 【SQL】力扣1571. 仓库经理 题目描述 本题目来自力扣&#xff08;LeetCode&#xff09;数据库题目集&#xff0c;编号1571&#xff0c;题…

vue3:26—新的内置组件

目录 Teleport Suspense Teleport 什么是Teleport? Teleport 是一种能够将我们的组件html结构移动到指定位置的技术 当在元素中的css使用了filter滤镜属性的时候&#xff0c;会导致内部 fixed 元素定位发生错误&#xff0c;即不再相对 viewport 进行定位&#xff0c;而是相对…

代码随想录day18 Java版

700.二叉搜索树中的搜索 前几天刚对比了下堆和二叉搜索树。堆是上下位置区分大小&#xff0c;二叉搜索树是左右位置区分大小 这道题简单应用了二叉搜索树的查找功能&#xff0c;直接用前序遍历 class Solution {public TreeNode searchBST(TreeNode root, int val) {if (roo…

《山雨欲来-知道创宇 2023 年度 APT 威胁分析总结报告》

下载链接: https://pan.baidu.com/s/1eaIOyTk12d9mcuqDGzMYYQ?pwdzdcy 提取码: zdcy

Django模板(三)

一、标签URL 返回与给定视图和可选参数相匹配的绝对路径引用(不含域名的 URL) {% url some-url-name v1 v2 %} 第一个参数是url模式名称,后面跟着的是参数,以空格分隔可以使用关键字: {% url some-url-name arg1=v1 arg2=v2 %}如果您想检索命名空间的URL,请指定完全限定…

matlab去图像畸变

Input_path ‘C:\Users\Dell\Desktop\毕业设计\去畸变\Image\1’; Output_path‘C:\Users\Dell\Desktop\毕业设计\去畸变\Image\2’; namelist dir(strcat(Input_path,‘*.jpg’)); %获得文件夹下所有的 .jpg图片 len length(namelist); for i1:len namenamelist(i).name; …

Msql-数据库死锁

实验案例 CREATE TABLE t1_deadlock ( id int(11) NOT NULL, name varchar(100) DEFAULT NULL, age int(11) NOT NULL, address varchar(255) DEFAULT NULL, PRIMARY KEY (id), KEY idx_age (age) USING BTREE, KEY idx_name (name) USING BTREE ) ENGINEInnoDB DEFAULT CHARS…

linux安装Webmin

简介 Webmin是功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。Webmin支持绝大多数的Unix系统&#xff0c;这些系统除了各种版本的linux以外还包括&#xff1a;AIX、HPUX、Solaris、Unixware、Irix和FreeBSD等。 安装…