当前位置: 首页 > news >正文

关于MyBatis-Plus 提供Wrappers.lambdaQuery()的方法

实例:

private LambdaQueryWrapper<XXX> buildQueryWrapper(XXXBo bo) { Map<String, Object> params = bo.getParams(); LambdaQueryWrapper<XXX> lqw = Wrappers.lambdaQuery(); lqw.eq(bo.getOrgId() != null, XXX::getOrgId, bo.getOrgId()); lqw.eq(bo.getSupplierId() != null, XXX::getSupplierId, bo.getSupplierId()); lqw.like(bo.getCertigier() != null, XXX::getCertigier, bo.getCertigier()); lqw.like(StringUtils.isNotBlank(bo.getTitle()), XXX::getTitle, bo.getTitle()); lqw.like(StringUtils.isNotBlank(bo.getCode()), XXX::getCode, bo.getCode()); lqw.like(StringUtils.isNotBlank(bo.getAddress()), XXX::getAddress, bo.getAddress()); lqw.eq(bo.getPermission() != null, XXX::getPermission, bo.getPermission()); lqw.eq(bo.getEndTime() != null, XXX::getEndTime, bo.getEndTime()); lqw.like(StringUtils.isNotBlank(bo.getRegCode()), XXX::getRegCode, bo.getRegCode()); lqw.eq(StringUtils.isNotBlank(bo.getRemark()), XXX::getRemark, bo.getRemark()); lqw.eq(StringUtils.isNotBlank(bo.getAgent()), XXX::getAgent, bo.getAgent()); lqw.between(params.get("beginOrderTime") != null && params.get("endOrderTime") != null, XXX::getOrderTime ,params.get("beginOrderTime"), params.get("endOrderTime")); lqw.between(params.get("beginRegTime") != null && params.get("endRegTime") != null, XXX::getRegTime ,params.get("beginRegTime"), params.get("endRegTime")); lqw.orderByDesc(XXX::getId); return lqw; }

这个方法是用于构建一个 LambdaQueryWrapper 对象的,LambdaQueryWrapper 是 MyBatis-Plus 提供的一个用于动态构建 SQL 查询条件的类。你这个方法主要是根据传入的 XXXBo 对象中的参数,来动态生成查询条件。以下是对该方法的详细解读:

1. 获取 params 参数:

Map<String, Object> params = bo.getParams();
这里从 XXX对象中获取了一个 params 字段,通常这是用于保存一些额外的查询参数,比如开始时间和结束时间等。

2. 创建 LambdaQueryWrapper 实例:

LambdaQueryWrar<XXX> lqw = Wrappers.lambdaQuery();
Wrappers.lambdaQuery() 是 MyBatis-Plus 提供的工具方法,创建了一个 LambdaQueryWrapper 对象,该对象用于后续的查询条件链式调用。

3. 动态添加查询条件:

根据不同的字段判断是否添加查询条件:
  • eq():用于等值查询。
  • like():用于模糊查询。
  • between():用于范围查询。
  • 每一个条件都根据对应的字段是否为空(或是否满足某个条件)来动态决定是否加到查询条件中。例如 bo.getId() != null,表示只有当 Id 不为空时,才会将这个字段加入查询条件。
  • like 用于模糊查询,eq 用于精确匹配。

4. 范围查询:

lqw.between(params.get("beginOrderTime") != null && params.get("endOrderTime") != null,
    XXX::getOrderTime ,params.get("beginOrderTime"), params.get("endOrderTime"));
lqw.between(params.get("beginRegTime") != null && params.get("endRegTime") != null,
    XXX::getRegTime ,params.get("beginRegTime"), params.get("endRegTime"));
这部分是对 params 中的 beginOrderTimeendOrderTimebeginRegTimeendRegTime 进行的范围查询。between() 方法的作用是查询某个字段在给定的两个时间之间的记录。

5. 排序:

这行代码表示最终的查询结果会按照 Id 字段降序排列。

总结:

这个方法的核心功能是根据 XXX对象的不同属性,动态生成相应的查询条件,并返回一个 LambdaQueryWrapper,这使得查询可以灵活应对不同的条件组合,符合动态 SQL 查询的需求。

如果有问题或者需要优化的地方,可以进一步讨论。

可以通过 between 方法来实现这个需求,在查询中增加一个 XXX::getId 在 0 到 9900 之间的条件。

你可以在现有的 buildQueryWrapper 方法中,添加如下条件:

lqw.betn(XXX::getId, 0, 9900);
 

相关文章:

关于MyBatis-Plus 提供Wrappers.lambdaQuery()的方法

实例&#xff1a; private LambdaQueryWrapper<XXX> buildQueryWrapper(XXXBo bo) { Map<String, Object> params bo.getParams(); LambdaQueryWrapper<XXX> lqw Wrappers.lambdaQuery(); lqw.eq(bo.getOrgId() ! null, XXX::getOrgId, bo.getOrgId()); lq…...

C++——vector的了解与使用

目录 引言 vector容器的基本概念 1.功能 2.动态大小 3.动态扩展 vector的接口 1.vector的迭代器 2.vector的初始化与销毁 3.vector的容量操作 3.1 有效长度和容量大小 (1)使用示例 (2)扩容机制 3.2 有效长度和容量操作 (1)reserve (2)resize 4.vector的访问操作…...

Ubuntu设置静态IP地址

Ubuntu如果是最小安装&#xff0c;没有图形界面&#xff0c;需要配置静态IP&#xff0c;该怎么操作呢&#xff1f; Netplan 是最新版 Ubuntu 的默认网络管理工具。Netplan 的配置文件使用 YAML 编写&#xff0c;扩展名为 .yaml。 注意&#xff1a;配置文件中的空格是语法的一部…...

力扣349.两个数组的交集

题目链接&#xff1a;349. 两个数组的交集 - 力扣&#xff08;LeetCode&#xff09; 给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的 交集。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2,…...

FreeRTOS - 软件定时器

在学习FreeRTOS过程中&#xff0c;结合韦东山-FreeRTOS手册和视频、野火-FreeRTOS内核实现与应用开发、及网上查找的其他资源&#xff0c;整理了该篇文章。如有内容理解不正确之处&#xff0c;欢迎大家指出&#xff0c;共同进步。 1. 软件定时器 软件定时器也可以完成两类事情…...

Python的Atlassian第三方库的详细介绍

atlassian-python-api 是一个用于与 Atlassian 生态系统进行交互的 Python 库&#xff0c;支持与多种 Atlassian 工具&#xff08;如 Jira、Confluence、Bitbucket 等&#xff09;进行 API 调用。它简化了 REST API 的调用&#xff0c;提供了高层次的抽象&#xff0c;方便开发者…...

Java中的基本循环结构详解

在Java编程中&#xff0c;循环是控制流的重要组成部分&#xff0c;用于重复执行一段代码。Java提供了三种基本的循环结构&#xff1a;for循环、while循环和do-while循环。本文将详细介绍这三种循环的语法和使用场景&#xff0c;并通过示例代码展示其应用。 一&#xff0c;for …...

关于Git Bash中如何定义alias

一、在一次临时Bash会话中使用alias 在Bash中直接输入alias xxdddd&#xff0c;xx为对应要执行的命令的缩写&#xff0c;dddd为要执行的命令&#xff0c;如alias ddcd /d&#xff0c;输入完成后&#xff0c;在Bash中输入dd&#xff0c;即可切换至D盘。 此种设置方式&#xff…...

luckfox1106初次使用

luckfox1106初次使用 下载rk驱动 https://files.luckfox.com/wiki/Luckfox-Pico/Software/DriverAssitant_v5.12.zip 安装驱动 SD 卡烧录工具 https://files.luckfox.com/wiki/Luckfox-Pico/Software/SocToolKit_v1.98_20240705_01_win.zip 右键以管理员方式运行...

ab命令深入解析:ApacheBench性能测试工具

软考鸭微信小程序 学软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 引言 在Web开发和运维领域&#xff0c;性能测试是评估服务器和应用性能的重要手段。ApacheBench&#xff08;简称ab&#xff09;是Apache HTTP服务器自带的…...

VSCode创建VUE项目(二)前端登录页面

一.创建登录页面 代码&#xff1a; <template><div class"login-container dis-h"><div class"login-form dis-h"><div class"dis-v left"><span> 欢迎~ </span><span> VUE 新世界 </span>&l…...

centos 8.4学习小结

1.权限委派 2.vim快捷方式 2.1非正常关闭文本处理方式 2.2快捷方式 2.3TAB键补齐安装包 [ rootcloud Packages]# rpm -ivh bash-completion-2.7-5.el8.noarch.rpm 2.4#history 查询历史记录 [rootcloud ~]# vim /etc/profile HISTSIZE1000&#xff08;默认保存1000条历史记…...

AI 设计工具合集

&#x1f423;个人主页 可惜已不在 &#x1f424;这篇在这个专栏AI_可惜已不在的博客-CSDN博客 &#x1f425;有用的话就留下一个三连吧&#x1f63c; ​ 前言: AI 视频&#xff0c;科技与艺术的精彩融合。它借助先进的人工智能技术&#xff0c;为影像创作带来全新可能。本书…...

mac 源代码安装openresty

1. clone源代码 git clone https://github.com/openresty/openresty.git 2. 安装依赖包 brew install hg unix2dos brew install pcre openssl 3. 编译 make 4. 安装openresty cd openresty-1.27.1.1 ./configure --prefix/opt/openresty --with-http_ssl_module --with-…...

人工智能和机器学习之线性代数(二)

人工智能和机器学习之线性代数(二) 本文Linear Algebra 101 for AI/ML – Part 2将通过介绍向量的点积(dot Product)、Embedding及其在相似性搜索中的应用来建立这些基础知识。 将学习Embedding&#xff0c;Embedding是表示概念、对象和想法的特殊类型的向量。Embedding在整个…...

Postman中的form-data 和 JSON 的区别

在使用 Postman 进行 API 测试时&#xff0c;form-data 和 JSON 是两种常用的请求体格式&#xff0c;它们有以下几个主要区别&#xff1a; 1. 数据格式 form-data: 主要用于表单数据的提交&#xff0c;适合文件上传和键值对的数据传递。数据以键值对的形式编码&#xff0c;类似…...

网络安全基础知识点_网络安全知识基础知识篇

文章目录 一、网络安全概述1.1 定义1.2 信息安全特性1.3 网络安全的威胁1.4 网络安全的特征 二、入侵方式2.1 黑客2.1.1 入侵方法2.1.2 系统的威胁2.2 IP欺骗与防范2.2.1 TCP等IP欺骗基础知识2.2.2 IP欺骗可行的原因2.2.3 IP欺骗过程2.2.4 IP欺骗原理2.2.5 IP欺骗防范2.3 Sniff…...

Vue.js 从入门到精通:全面解析组件化、路由与状态管理(附 Todo 案例)

在当今的前端开发领域&#xff0c;Vue.js 以其简洁、高效和灵活的特点受到了广泛的关注和应用。本文将带你从 Vue 的基础知识入手&#xff0c;逐步深入到高级特性&#xff0c;让你对 Vue 有一个全面的了解&#xff0c;并通过实际案例帮助你更好地掌握 Vue 的开发。 一、Vue 简…...

AI Weekly#1:过去一周重要的AI资讯汇总

&#x1f680;热点头条 诺贝尔奖青睐AI领域&#xff1a;2024年诺贝尔物理学奖和化学奖均授予了与人工智能相关的研究。物理学奖颁发给了约翰霍普菲尔德和杰弗里辛顿&#xff0c;表彰他们在机器学习领域的开创性工作。化学奖则授予了大卫贝克、德米斯哈萨比斯和约翰江珀&#xf…...

图论刷题

卡码网 98. 所有可达路径 使用邻接矩阵存储&#xff1a; #include<iostream> #include<vector> using namespace std;vector<vector<int>>res;//收集符合条件的路径vector<int>path;//0节点到终点的路径//确定递归函数 参数和返回值void dfs(c…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...