MybatisPlus中的customSqlSegment动态拼接where条件

embedded/2025/3/13 12:57:30/

前言

在对于一些MybatisPlus提供的Api无法实现的SQL场景,我们需要去到xml文件中写SQL语句,where条件的编写让人十分头疼,那么有没有一种便捷的方式通过MybatisPlus提供的Api快捷拼接where条件呢?有的有的,这就是今天要介绍的customSqlSegment。

编写流程

创建mapper接口

入参定义为QueryWrapper,用来接收查询条件。

调用mapper接口

构造QueryWrapper来设置查询条件,这里的test是自定义的方法用于判断条件是否成立,成立返回true,eq等条件方法才会拼接,相当于xml中的<if test = "">,test方法在下方需要可自取。

java">public static boolean test(Object o) {if (o == null) {return false;}if (o instanceof String s) {return !s.isBlank();}if (o instanceof List<?> list) {return !list.isEmpty();}return true;}

编写SQL

在xml中正常编写SQL,where条件部分通过 ${接口中参数别名.customSqlSegment}  来引用条件,MybatisPlus会自动为我们拼接上where条件。

 

这样一来,即使需要在xml中编写SQL语句,也不用进行繁琐的拼接条件工作了,代码更加简洁,可维护性也更高了。


http://www.ppmy.cn/embedded/172246.html

相关文章

自动同步多服务器下SQL脚本2.0

考虑到1.0的适用场景太过苛刻&#xff0c;一次只支持读取至多一个版本的脚本变化&#xff0c;想涉及多个脚本的连续读取就有困难&#xff0c;于是有了2.0。 该版本支持读取多个版本的sql脚本&#xff0c;并且如果某一脚本出现sql问题【如重复插入相同名称的字段】&#xff0c;…

Rust 之一 基本环境搭建、各组件工具的文档、源码、配置

概述 Rust 是一种强调性能、类型安全和并发性的通用编程语言。它强制执行内存安全&#xff0c;使用其特有的所有权机制&#xff0c;而无需传统的垃圾收集器。Rust 不强制执行编程范式&#xff0c;但受到函数式编程思想的影响。 最初是由 Mozilla 员工 Graydon Hoare 在 2006 年…

大数据面试之路 (三) mysql

技术选型通常也是被问道的问题&#xff0c; 一方面考察候选人对技术掌握程度&#xff0c;另一方面考察对项目的理解&#xff0c;以及项目总结能力。介绍项目是从数据链路介绍&#xff0c;是一个很好来的方式&#xff0c;会让人觉得思路清晰&#xff0c;项目理解透彻。 将Spark …

k8s面试题总结(十二)

1.简述ETCD适应的场景&#xff1f; 适用于数据高一致性的场景&#xff0c;确保分布式环境中的数据是一致的。适用于服务高可用时的场景。适用于多节点数据分布式存储的场景。适用于服务之间协调和交互使用的场景。 2.Etcd集群之间是怎么同步数据的&#xff1f; 在etcd集群中…

UE5 RVT 制作场景交互 - 遮罩

RVT可以通过物体制作场景的RVT的贴图遮罩绘制 首先放一个Runtime Virtual Texture Volume在场景里面 设置一个合理的大小 创建一个RVT 这里有你想要的存储的通道和贴图精度 将才创建的RVT放到Runtime Virtual Texture Volume上去 现在放一个平面到Runtime Virtual Texture Volu…

Go语言环境搭建并执行第一个Go程序

目录 一、Windows环境搭建 二、vscode安装插件 三、运行第一个go程序 一、Windows环境搭建 下载Go&#xff1a;All releases - The Go Programming Language 这里是Windows搭建&#xff0c;选择的是windows-amd64.msi&#xff0c;也可以选择zip直接解压缩到指定目录 选择msi…

【Node.js入门笔记3---fs 文件系统模块】

Node.js入门笔记3 Node.js---fs 文件系统模块一、文件基础操作0.学习fs的前提1.fs.readFile()&#xff1a;用来读取指定文件中的内容。读取txt文件里面的内容&#xff1a;读取XLSX文件里面的内容&#xff1a; 2. fs.writeFile()&#xff1a;用来向指定的文件中写入内容&#xf…

Percona XtraBackup8.0备份实例

Percona XtraBackup8.0备份实例 ​ 此示例演示了初级 DBA 如何使用 Percona XtraBackup 8.0 和 Percona Server for MySQL 8.0 数据库服务器为大型组织设置每日完整备份和每小时增量备份。 一、实验环境 您的系统上安装了 Percona XtraBackup 8.0。您有一个正在运行的 Perco…