MyBatis-Plus 条件构造器的使用(左匹配查询)
在上一篇文章中,我们已经介绍了 MyBatis-Plus 条件构造器,包括 QueryWrapper 和 UpdateWrapper 的基本使用方法、常见查询条件(如等于、不等于、大于、小于)以及如何使用 Lambda 表达式来构建动态查询和更新条件。
在本文中,我们将进一步扩展 MyBatis-Plus 条件构造器 的使用,增加 左匹配查询(like 查询的变体)功能,帮助开发者更好地构建复杂的查询条件。
1. 左匹配查询(likeLeft)
在 SQL 中,左匹配查询(也称为 前缀模糊查询)通常用于查找以某个特定字符或子字符串开始的记录。例如,查找所有名字以 “J” 开头的用户。
在 MyBatis-Plus 中,QueryWrapper 提供了 likeLeft 方法来实现左匹配查询。它通过在 like 查询的模式中加上 % 来实现前缀匹配。
1.1 likeLeft 的作用
-
likeLeft方法在查询条件中拼接%,使得查询变成“以指定值开头”的模糊匹配。例如,查询所有以 “John” 开头的名字:
"John%"。
1.2 使用 likeLeft 进行左匹配查询
示例:使用 likeLeft 进行左匹配查询
假设有一个用户表 User,包含字段 name 和 age,我们希望查询所有名字以 John 开头的用户。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.likeLeft("name", "John"); // 查询名字以 "John" 开头的用户
List<User> users = userMapper.selectList(queryWrapper);
在这个例子中:
-
likeLeft("name", "John"):生成的 SQL 查询将是:SELECT * FROM user WHERE name LIKE 'John%';这将返回所有名字以 “John” 开头的用户。
2. 使用 QueryWrapper 和 LambdaQueryWrapper 构建复杂查询
2.1 结合其他查询条件进行组合
likeLeft 可以与其他查询条件结合使用,构建更复杂的查询。例如,查询所有年龄大于 20 且名字以 “John” 开头的用户。
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.gt("age", 20) // 查询年龄大于 20.likeLeft("name", "John"); // 查询名字以 "John" 开头
List<User> users = userMapper.selectList(queryWrapper);
在这个例子中:
gt("age", 20):查询年龄大于 20 的用户。likeLeft("name", "John"):查询名字以 “John” 开头的用户。
生成的 SQL 会是:
SELECT * FROM user WHERE age > 20 AND name LIKE 'John%';
2.2 使用 LambdaQueryWrapper 进行左匹配查询
与 QueryWrapper 类似,LambdaQueryWrapper 也支持 左匹配查询,并且通过 Lambda 表达式 来构建查询条件,提供了更好的类型安全。
示例:使用 LambdaQueryWrapper 进行左匹配查询
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.likeLeft(User::getName, "John"); // 查询名字以 "John" 开头的用户
List<User> users = userMapper.selectList(queryWrapper);
在这个例子中:
likeLeft(User::getName, "John"):通过 Lambda 表达式引用字段,构建前缀模糊查询,查询名字以 “John” 开头的用户。
注意:
LambdaQueryWrapper提供了更加安全和易读的方式来构建查询条件,它可以避免直接拼接字符串时发生的字段拼写错误。
3. 其他常见查询条件的结合
3.1 使用 likeLeft 和 likeRight 结合
除了 likeLeft,MyBatis-Plus 还提供了 likeRight 方法用于 右匹配查询(后缀模糊查询)。你可以将它们与其他查询条件结合使用,构建更加灵活的查询。
示例:结合 likeLeft 和 likeRight
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.likeLeft("name", "John") // 查询名字以 "John" 开头的用户.likeRight("email", "gmail.com"); // 查询邮箱以 "gmail.com" 结尾的用户
List<User> users = userMapper.selectList(queryWrapper);
生成的 SQL 查询为:
SELECT * FROM user WHERE name LIKE 'John%' AND email LIKE '%gmail.com';
3.2 结合 likeLeft 和 in 条件
你还可以将 likeLeft 与其他条件,如 in,结合起来,进行复杂的条件查询。
示例:使用 likeLeft 和 in 条件
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.likeLeft("name", "John") // 查询名字以 "John" 开头的用户.in("age", 20, 25, 30); // 查询年龄为 20、25 或 30 的用户
List<User> users = userMapper.selectList(queryWrapper);
生成的 SQL 查询为:
SELECT * FROM user WHERE name LIKE 'John%' AND age IN (20, 25, 30);
4. 总结
likeLeft:用于实现 左匹配查询,即查询以指定字符串开头的数据。QueryWrapper和LambdaQueryWrapper:都可以用于构建 左匹配查询,LambdaQueryWrapper提供了更强的类型安全性。- 多条件组合查询:
likeLeft可以与其他查询条件(如gt、lt、in等)结合使用,构建更复杂的查询。 - 灵活的 SQL 构建:MyBatis-Plus 的条件构造器允许开发者通过链式调用和 Lambda 表达式来简洁地构建动态 SQL 查询,提升代码可读性和维护性。
通过 likeLeft 等查询条件,开发者可以轻松构建多种查询场景,满足复杂的业务需求。 🚀
相关文章:
MyBatis-Plus 条件构造器的使用(左匹配查询)
在上一篇文章中,我们已经介绍了 MyBatis-Plus 条件构造器,包括 QueryWrapper 和 UpdateWrapper 的基本使用方法、常见查询条件(如等于、不等于、大于、小于)以及如何使用 Lambda 表达式来构建动态查询和更新条件。 在本文中&…...
深入理解设计模式中的单例模式(Singleton Pattern)
各类资料学习下载合集 https://pan.quark.cn/s/8c91ccb5a474 单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供全局访问点。这种模式在许多应用场景中都很有用,特别是当我们希望控制对共享资源的访问时,比…...
CES Asia 2025增设未来办公教育板块,科技变革再掀高潮
作为亚洲消费电子领域一年一度的行业盛会,CES Asia 2025(第七届亚洲消费电子技术贸易展)即将盛大启幕。今年展会规模再度升级,预计将吸引超过500家全球展商参展,专业观众人数有望突破10万。除了聚焦人工智能、物联网、…...
汽车零部件厂如何选择最适合的安灯系统解决方案
在现代制造业中,安灯系统作为一种重要的生产管理工具,能够有效提升生产线的异常处理效率,确保生产过程的顺畅进行。对于汽车零部件厂来说,选择一套适合自身生产需求的安灯系统解决方案尤为重要。 一、安灯系统的核心功能 安灯系统…...
sqlite3 c++ client选择; c++环境搭建 : abseil-cpp | fnc12/sqlite_orm
sqlite3 c client选择 今日20250305 2.4K星: 7月前最后提交核心: SRombauts/SQLiteCpp.git : 薄封装、命令式sql、非orm、支持事务2.4K星: 1月前最后提交核心: fnc12/sqlite_orm.git : 厚封装、非侵入、真orm、真泛型、类型复杂、支持事务 因真泛型导致DbInstance必须放在x.h…...
Pytorch中的主要函数
目录 一、torch.manual_seed(seed)二、torch.cuda.manual_seed(seed)三、torch.rand(*size, outNone, dtypeNone, layouttorch.strided, deviceNone, requires_gradFalse)四、给大家写一个常用的自动选择电脑cuda 或者cpu 的小技巧五、torch.version.cuda;torch.bac…...
景联文科技:以专业标注赋能AI未来,驱动智能时代的精准跃迁
在人工智能技术重塑全球产业格局的今天,高质量训练数据已成为驱动算法进化的核心燃料。作为数据智能服务领域的领军者,景联文科技深耕数据标注行业多年,以全栈式数据解决方案为核心,构建起覆盖数据采集、清洗、标注、质检及算法调…...
车载测试:智能座舱测试中多屏联动与语音交互的挑战
智能座舱作为汽车智能化发展的核心,集成了多屏联动和语音交互功能,为驾驶员和乘客提供更便捷的体验。然而,这些功能的测试面临诸多挑战,包括多屏同步性、噪声干扰和复杂场景的处理。本文将详细分析这些挑战,探讨测试方…...
深入探索WebGL:解锁网页3D图形的无限可能
深入探索WebGL:解锁网页3D图形的无限可能 引言 。WebGL,作为这一变革中的重要技术,正以其强大的功能和广泛的应用前景,吸引着越来越多的开发者和设计师的关注。本文将深入剖析WebGL的核心原理、关键技术、实践应用,并…...
仿mudou库one thread oneloop式并发服务器
项目gitee:仿muduo: 仿muduo 一:项目目的 1.1项目简介 通过咱们实现的⾼并发服务器组件,可以简洁快速的完成⼀个⾼性能的服务器搭建。 并且,通过组件内提供的不同应⽤层协议⽀持,也可以快速完成⼀个⾼性能应⽤服务器…...
Linux 文件和目录权限管理详解
文章目录 Linux 文件和目录权限管理详解介绍权限管理的核心内容权限管理访问权限查看权限更改权限所有者和用户组的设置权限设置注意事项 总结 Linux 文件和目录权限管理详解 介绍 在 Linux 系统中,文件和目录的权限管理是确保系统安全的重要组成部分。每个文件和…...
CentOS 7 aarch64上制作kernel rpm二进制包 —— 筑梦之路
环境说明 centos 7 aarch64 gcc 8.3.1 kernel 5.4.290 准备编译制作 # 安装必要的工具和包yum install rpm-devel rpmdevtools yum groupinstall "Development Tools"yum install ncurses-devel bc elfutils-libelf-devel openssl-devel # 安装gcc 8.3.1# 修改…...
Windows 图形显示驱动开发-WDDM 3.2-本机 GPU 围栏对象(二)
GPU 和 CPU 之间的同步 CPU 必须执行 MonitoredValue 的更新,并读取 CurrentValue,以确保不会丢失正在进行的信号中断通知。 当向系统中添加新的 CPU 等待程序时,或者如果现有的 CPU 等待程序失效时,OS 必须修改受监视的值。OS …...
vscode 都有哪些大模型编程插件
VSCode 中有许多基于大模型的编程插件,这些插件通过集成人工智能技术,显著提升了开发者的编程效率和体验。以下是一些主要的大模型编程插件及其功能: GitHub Copilot GitHub Copilot 是由 OpenAI 开发的插件,能够根据代码上下文自…...
常用的分布式 ID 设计方案
文章目录 1.UUID2.数据库自增 ID3.雪花算法4.Redis 生成 ID5.美团 Leaf 1.UUID 原理:UUID 是由数字和字母组成的 128 位标识符,通过特定算法随机生成,包括时间戳、计算机网卡地址等信息。常见的版本有版本 1(基于时间戳和 MAC 地…...
DAIR-V2X-R数据集服务器下载
【官方github链接】https://github.com/ylwhxht/V2X-R 点击并登录 选择并点击下载 浏览器弹窗,右键选择复制下载链接 ------------------------------------服务器下载----------------------------------------- 登录服务器,选在要下载的文件夹复制路…...
EasyRTC嵌入式视频通话SDK的跨平台适配,构建web浏览器、Linux、ARM、安卓等终端的低延迟音视频通信
1、技术背景 WebRTC是一项开源项目,旨在通过简单的API为浏览器和移动应用程序提供实时通信(RTC)功能。它允许在无需安装插件或软件的情况下,实现点对点的音频、视频和数据传输。 WebRTC由三个核心组件构成: GetUserM…...
影院购票系统(二)——uni-app移动应用开发
这一篇讲解系统的逻辑代码部分,下面是ai的讲解,也可以直接跳到代码部分进行浏览。 一、整体功能概述 这个Vue组件构建了一个完整的影院座位选择系统,涵盖从座位数据初始化、视图渲染到交互处理以及业务逻辑的整个流程。它遵循响应式编程模式…...
DeepSeek×博云AIOS:突破算力桎梏,开启AI普惠新纪元
背景 在全球人工智能技术高速迭代的背景下,算力成本高企、异构资源适配复杂、模型部署效率低下等问题,始终是制约企业AI规模化应用的关键。 DeepSeek以创新技术直击产业痛点,而博云先进算力管理平台AIOS的全面适配,则为这一技术…...
DeepSeek能画流程图吗?分享一种我正在使用的DeepSeek画流程图教程
…...
网络安全试题填空题
🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 2018年期末题 1. 分布式防火墙系统组成不包括(D) A.网络防火墙 B.主机防火墙 C.中心管理防火墙 D.传统防火墙 2.下列不是入侵者主要行为模…...
MySQL中查看表结构
1. 使用 DESCRIBE 或 DESC 命令 DESCRIBE(或其简写 DESC)是最简单和最直接的方法,可以显示表的列信息。 语法: DESCRIBE table_name; -- 或者 DESC table_name;示例: 假设有一个名为 employees 的表,可以…...
个推助力小米米家全场景智能生活体验再升级
当AI如同水电煤一般融入日常,万物互联的图景正从想象照进现实。作为智能家居领域的领跑者,小米米家凭借开放的生态战略,已连接了超8.6亿台设备,构建起全球领先的消费级AIoT平台。如今,小米米家携手个推,通过…...
linux服务器根据内核架构下载各种软件依赖插件(例子:Anolis服务器ARM64架构内核Nginx依赖插件下载)
Anolis服务器ARM64架构内核Nginx依赖插件下载 Nginxy依赖包:阿里云镜像站搜索自己的系统如下点击系统,进入详情页面点击下载地址点击对应版本号选择Os继续点击OS点击Packagesctrf搜索资源,依次下载资源,版本建议选最新把下载好的资…...
[css] line-height如何继承
line-height继承,一共有以下3种情况: <body><p>这是一行文字</p> </body>写具体数值,则直接继承该值。 body {font-size: 20px;line-height: 50px; /* 数值 */ } p {font-size: 10px; }<p> 元素 line-height…...
GaussianCity:实时生成城市级数字孪生基底的技术突破
在空间智能领域,如何高效、大规模地生成高质量的3D城市模型一直是一个重大挑战。传统方法如NeRF和3D高斯溅射技术(3D-GS)在效率和规模上存在显著瓶颈。GaussianCity通过创新性的技术方案,成功突破了这些限制,为城市级数字孪生的构建提供了全新路径。 一、核心创新:突破传…...
华为配置篇-OSPF基础实验
OSPF 一、简述二、常用命令总结三、实验3.1 OSPF单区域 一、简述 OSPF(开放式最短路径优先协议) 基本定义 全称:Open Shortest Path First 类型:链路状态路由协议(IGP),用于自治系统ÿ…...
获取哔站评论
一、文章立论 哔哩哔哩(B站)是当前年轻人十分喜爱的视频分享平台,以其丰富多样的内容、互动性强的社区氛围以及独特的弹幕文化深受用户喜爱。在该平台上,用户不仅可以观看各种类型的视频,如动画、游戏、科技、生活、影…...
《当AI生成内容遭遇审核:需求与困境的深度剖析》:此文为AI自动生成
AI 内容审核:数字时代的守门人 在当今数字技术迅猛发展的浪潮中,AI 在内容生成领域取得了令人瞩目的成就,成为了推动创新与变革的核心力量。以 AI 绘画为例,从早期简单粗糙的图像生成,到如今能够创作出细节丰富、风格多…...
jenkins流程概述
1. 需求场景 代码托管在 GitHub/GitLab需要 自动化构建 Docker 镜像,并部署到 Docker 服务器生产环境使用 Docker Compose 或 Kubernetes(K8s) 2. Jenkins 流程 拉取代码使用 Maven 构建 JAR使用 Docker 构建镜像推送 Docker 镜像到仓库在…...
