Java使用 MyBatis-Plus 的 OR
Java使用 MyBatis-Plus 的 OR
- 一、前言
- 1. 简介
- 2. OR 查询
- 2.1 基础 OR 查询
- 2.2 使用 Lambda 表达式简化
- 二、总结
一、前言
学习使用 MyBatis-Plus 的 OR 及高级语句是提升数据库操作效率和灵活性的关键步骤。MyBatis-Plus 是 MyBatis 的增强工具包,提供了许多便捷的功能和语法糖,使得数据库操作更加简洁和高效。本文将介绍如何利用 MyBatis-Plus 实现 OR 查询和使用其高级语句的技巧。
1. 简介
MyBatis-Plus 在 MyBatis 的基础上进行了封装和增强,简化了 CRUD 操作和复杂查询的编写。在实际开发中,经常会遇到需要 OR 条件查询的情况,比如同时满足多个条件之一的数据,这时候 OR 查询就显得尤为重要。
2. OR 查询
2.1 基础 OR 查询
使用 MyBatis-Plus 进行 OR 查询非常简单,主要是通过 Wrapper 类进行条件组装。假设我们有一个实体类 User,包含字段 name 和 age,我们想要查询名字为 “Alice” 或者年龄大于 25 的用户,代码如下:
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public List<User> queryUsers(String name, Integer age) {QueryWrapper<User> wrapper = new QueryWrapper<>();wrapper.eq("deleted", 0) // 假设逻辑删除字段为 deleted,0 表示未删除.and(wq -> wq.eq("name", name).or().gt("age", age));return userMapper.selectList(wrapper);}
}
在这个例子中,QueryWrapper 的 and 方法允许我们组合多个条件,wq -> wq.eq("name", name).or().gt("age", age) 表示查询 name 等于指定值或者 age 大于指定值的用户。
2.2 使用 Lambda 表达式简化
如果你的项目使用了 Lambda 表达式,MyBatis-Plus 也提供了 LambdaQueryWrapper 类来进一步简化代码。上面的例子可以改写成:
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public List<User> queryUsers(String name, Integer age) {LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();wrapper.eq(User::getDeleted, 0) // 假设逻辑删除字段为 deleted,0 表示未删除.and(wq -> wq.eq(User::getName, name).or().gt(User::getAge, age));return userMapper.selectList(wrapper);}
}
使用 LambdaQueryWrapper 可以直接通过实体类的属性方法进行条件组装,更加直观和类型安全。
二、总结
通过本文的学习,你应该能够掌握如何在使用 MyBatis-Plus 中进行 OR 查询和使用其高级语句的方法。MyBatis-Plus 提供了丰富的 API 和简化的语法,能够显著提升开发效率,减少重复代码的编写,是开发中非常有价值的工具库之一。在实际项目中,结合具体业务需求和数据库设计,合理运用 MyBatis-Plus 能够帮助我们更加高效地进行数据操作。
相关文章:
Java使用 MyBatis-Plus 的 OR
Java使用 MyBatis-Plus 的 OR 一、前言1. 简介2. OR 查询2.1 基础 OR 查询2.2 使用 Lambda 表达式简化 二、总结 一、前言 学习使用 MyBatis-Plus 的 OR 及高级语句是提升数据库操作效率和灵活性的关键步骤。MyBatis-Plus 是 MyBatis 的增强工具包,提供了许多便捷的…...
[Linux]CentOS软件的安装
一、Linux 软件包管理器 yum 1.Linux安装软件的方式 在linux中安装软件常用的有三种方式: 源代码安装(我们还需要进行编译运行后才可以,很麻烦) rpm安装(Linux的安装包,需要下载一些rpm包,但是…...
4000厂商默认账号密码、默认登录凭证汇总.pdf
获取方式: 链接:https://pan.baidu.com/s/1F8ho42HTQhebKURWWVW1BQ?pwdy2u5 提取码:y2u5...
RK3568笔记三十六:LED驱动开发(设备树)
若该文为原创文章,转载请注明原文出处。 记录使用设备树编写一个简单的 LED 灯驱动程序 一、编程思路 程序编写的主要内容为添加 LED 灯的设备树节点、在驱动程序中使用 of 函数获取设备节点中的 属性,编写测试应用程序。 • 首先向设备树添加 LED 设备…...
AC修炼计划(AtCoder Regular Contest 180) A~C
A - ABA and BAB A - ABA and BAB (atcoder.jp) 这道题我一开始想复杂了,一直在想怎么dp,没注意到其实是个很简单的规律题。 我们可以发现我们住需要统计一下类似ABABA这样不同字母相互交替的所有子段的长度,而每个字段的的情况有ÿ…...
云计算练习题
第一题:每周日晚上11点59分需要将/data目录打包压缩到/mnt目录下并以时间命名 #crontab -e 59 23 * * 7 /bin/tar czvf /mnt/date %F-data.tar.gz /data 59 23 * * 7 /bin/tar czvf /mnt/date %T.tar.gz /data 第二题:查找出系统中/application目录下所有…...
《战甲神兵》开发者报告:游戏崩溃问题80%发生在Intel可超频酷睿i9处理器上——酷睿i7 K系列CPU也表现出高崩溃率
在Intel持续面临第13代和第14代CPU崩溃问题的背景下,近日,《战甲神兵》(Warframe)的开发者们于7月9日披露了游戏崩溃的统计数据,并描述了诊断该问题的过程。根据开发团队的说法,一名未进行超频且使用全新PC的员工,即便…...
Postman下载及使用说明
Postman使用说明 Postman是什么? Postman是一款接口对接工具【接口测试工具】 接口(前端接口)是什么? 前端发送的请求普遍被称为接口 通常有网页的uri参数格式json/key-value请求方式post/get响应请求的格式json 接…...
什么是im即时通讯?WorkPlus im即时通讯私有化部署安全可控
IM即时通讯是Instant Messaging的缩写,指的是一种实时的、即时的电子信息交流方式,也被称为即时通讯。它通过互联网和移动通信网络,使用户能够及时交换文本消息、语音通话、视频通话、文件共享等信息。而WorkPlus im即时通讯私有化部署则提供…...
hnust 1794: 机器翻译
hnust 1794: 机器翻译 题目描述 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存…...
AI人工智能开源大模型生态体系分析
人工智能开源大模型生态体系研究 "人工智能开源大模型生态体系研究报告v1.0"揭示,AI(A)的飞速发展依赖于三大核心:数据、算法和算力。这一理念已得到业界广泛认同,三者兼备才能推动AI的壮大发展。随着AI大模型的扩大与普及…...
ArkTS学习笔记_封装复用之@Styles装饰器
ArkTS学习笔记_封装复用之Styles装饰器 背景: 在开发中,如果每个组件的样式都需要单独设置,就会出现大量代码在进行重复样式设置,虽然可以复制粘贴,但为了代码简洁性和后续方便维护,给出的思路是ÿ…...
根据vue学习react
react的函数式组件与vue2是很像的 一、基础类似点 1、组件下拥有一个根节点,vue2是template,react是幽灵标签<> 2、vue2是{{}}以及v-model,react的绑定是{} 3、vue2编译html是v-html,react是{},并且react的jsx中…...
Hi3861 OpenHarmony嵌入式应用入门--HTTPD
httpd 是 Apache HTTP Server 的守护进程名称,Apache HTTP Server 是一种广泛使用的开源网页服务器软件。 本项目是从LwIP中抽取的HTTP服务器代码; Hi3861 SDK中已经包含了一份预编译的lwip,但没有开启HTTP服务器功能(静态库无法…...
MICS2024|少样本学习、多模态技术以及大语言模型在医学图像处理领域的研究进展|24-07-14
小罗碎碎念 本期推文主题 今天的会议很多主题都集中在大模型、多模态这两个方面,很明显,这两个方向都是目前的研究热点。 所以,我这一期推文会先简单的分析一下秦文健(中科院)和史淼晶(同济大学)…...
ConfigMap-secrets-静态pod
一.ConfigMap 1.概述 ConfigMap资源,简称CM资源,它生成的键值对数据,存储在ETCD数据库中 应用场景:主要是对应用程序的配置 pod通过env变量引入ConfigMap,或者通过数据卷挂载volume的方式引入ConfigMap资源 官方解释…...
SQL Error: 1406, SQLState: 22001
SQL错误代码1406和SQLState 22001通常表示“列数据过长”错误。这意味着尝试插入或更新列中的值,但该值的长度超过了该列允许的最大长度。 解决此问题的几个步骤: 检查列长度: 确定引起错误的列。检查数据库架构中该列允许的最大长度。 验证…...
【密码学基础】基于LWE(Learning with Errors)的全同态加密方案
学习资源: 全同态加密I:理论与基础(上海交通大学 郁昱老师) 全同态加密II:全同态加密的理论与构造(Xiang Xie老师) 现在第二代(如BGV和BFV)和第三代全同态加密方案都是基…...
Linux - 基础开发工具(yum、vim、gcc、g++、make/Makefile、git)
目录 Linux软件包管理器 - yum Linux下安装软件的方式 认识yum 查找软件包 安装软件 如何实现本地机器和云服务器之间的文件互传 卸载软件 Linux编辑器 - vim vim的基本概念 vim下各模式的切换 vim命令模式各命令汇总 vim底行模式各命令汇总 vim的简单配置 Linux编译器 - gc…...
网络安全法律框架更新:最新合规要求与企业应对策略
网络安全法律框架的最新更新 近期,中国的网络安全法律框架经历了重要的更新。2022年,《网络安全法》迎来了首次修改,这一修订主要是为了与《数据安全法》和《个人信息保护法》等新实施的法律进行衔接协调,完善法律责任制度&#x…...
集团首都公报:武汉市放飞炬人产业引导基金有限责任公司财政处批准 《武汉市放飞炬人产业引导基金有限责任公司财政处现金顾问制条令》
集团首都公报:武汉市放飞炬人产业引导基金有限责任公司财政处批准 《武汉市放飞炬人产业引导基金有限责任公司财政处现金顾问制条令》...
固件逆向实战指南:从熵值分析到函数重建的七步法
1. 这不是“刷机教程”,而是一份固件逆向的实战切片很多人第一次听说“固件逆向”,脑子里浮现的是路由器刷OpenWrt、智能摄像头换壳跑Home Assistant,或者某款老式NAS突然不支持新硬盘,只好翻出U-Boot命令硬怼。这些确实是固件逆向…...
Windows 11系统级优化:ExplorerPatcher核心技术深度解析与专业修复方案
Windows 11系统级优化:ExplorerPatcher核心技术深度解析与专业修复方案 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher Windows 11…...
【Linux驱动开发】第12天:Linux设备树核心:树形结构+节点+属性 完整全解
目录 设备树树形结构概述节点(Node)全解:命名规范标准节点常用设备节点属性(Property)全解:类型核心属性总线专用属性标签与节点引用:设备树复用的核心常见错误与注意事项总结:驱动…...
无授权不感知、无穿戴可溯源:无感定位重构公安新型治安底座
无授权不感知、无穿戴可溯源:无感定位重构公安新型治安底座镜像视界浙江科技有限公司依托国家十四五重点课题研究成果、镜像视界浙江普陀时空大数据应用技术联合研究院联合研发体系与河南省电检院权威认证资质,以自研空间计算技术为根基打磨无感定位体系…...
牛牛走迷宫【牛客tracker 每日一题】
牛牛走迷宫 时间限制:1秒 空间限制:256M 网页链接 牛客tracker 牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每日有…...
权威深度指南:使用iperf3 Windows版进行网络性能评估与优化实战
权威深度指南:使用iperf3 Windows版进行网络性能评估与优化实战 【免费下载链接】iperf3-win-builds iperf3 binaries for Windows. Benchmark your network limits. 项目地址: https://gitcode.com/gh_mirrors/ip/iperf3-win-builds iperf3 Windows版是专业…...
华大半导体三大产品线深度解析:安全控制、汽车电子与功率芯片实战指南
1. 项目概述:一次关于“中国芯”的深度现场探访最近,我有机会近距离接触了华大半导体的产品展示与技术交流活动。当“聚焦三大产品线,华大半导体展示最强‘中国芯’!”这个标题映入眼帘时,我内心的第一反应是ÿ…...
如何在3分钟内完成Zotero插件市场终极安装指南
如何在3分钟内完成Zotero插件市场终极安装指南 【免费下载链接】zotero-addons Zotero Add-on Market | Zotero插件市场 | Browsing and installing plugins within Zotero 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-addons 你是否曾为寻找合适的Zotero插件而…...
如何用Sumo-RL构建智能交通信号系统:完整强化学习实战指南
如何用Sumo-RL构建智能交通信号系统:完整强化学习实战指南 【免费下载链接】sumo-rl Reinforcement Learning environments for Traffic Signal Control with SUMO. Compatible with Gymnasium, PettingZoo, and popular RL libraries. 项目地址: https://gitcode…...
