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

MyBatis 动态 SQL 标签详解教程:_set_、_trim_、_sql_、_choose_、_when_


一、动态 SQL 核心标签概览

在 MyBatis 中,动态 SQL 允许根据条件灵活拼接 SQL 语句。以下是本文重点讲解的标签及其作用:

标签用途典型场景
<set>动态生成 SET 子句,自动去除末尾逗号更新操作中处理非空字段
<trim>自定义前缀/后缀,修剪多余字符灵活处理 WHERESET 子句
<sql> + <include>复用 SQL 片段减少重复代码
<choose>多条件分支选择(类似 switch-case多选一条件过滤

二、标签详解与代码示例

以下结合用户提供的 EmpMapper.xml 和测试代码进行解析。


1. <set> 标签

用途:动态生成 UPDATE 语句的 SET 子句,自动处理逗号。
核心属性:无,内部通过 <if> 判断字段是否需要更新。

(1) 代码示例
<update id="updateEmp">UPDATE emp<set><if test="name != null">name = #{name},</if><if test="age != null">age = #{age},</if><if test="addr != null">addr = #{addr},</if><if test="salary != null">salary = #{salary},</if></set>WHERE id = #{id}
</update>
(2) 运行逻辑
  • 输入Emp 对象中 name="张四",其他字段为 null
  • 生成 SQL
UPDATE emp SET name = '张四' WHERE id = 1
  • 自动去逗号:即使 name<if> 内写了逗号,<set> 会智能删除末尾逗号。
(3) 对比 <trim> 实现

<set><trim> 的简化写法,等价于:

<trim prefix="SET" suffixOverrides
http://www.xdnf.cn/news/7673.html

相关文章:

  • 抢占短剧商业蓝海!AI 驱动 CPS 系统开发定制赋能高效变现
  • 数据结构*排序
  • tigase源码学习笔记-事件总线EventBus
  • 跨境外贸电商供应链一体化ERP管理系统
  • 波次拉料在精益生产中下的应用
  • OpenHarmony 5.0设置应用设置手势导航开关打开后重新关闭导航栏和设置界面重合
  • onlyoffice 源码 调试说明 -ARM和x86双模式安装支持
  • [Harmony]获取设备参数
  • SpringBoot 商城系统高并发引起的库存超卖库存问题 乐观锁 悲观锁 抢购 商品秒杀 高并发
  • 机械安全标准示例说明
  • 机器学习算法-聚类K-Means
  • 园区无人机智能巡检项目方案
  • 机器学习自然语言处理
  • SAP ECC即将停止支持,CIO如何应对S/4HANA的迁移挑战?
  • 【机器学习】logistic回归
  • Java 02入门,封装继承多态
  • 随记1-LLM多轮对话的陷阱
  • 操作系统学习笔记第5章 (竟成)
  • [解决方案] Word转PDF
  • Android SharedPreferences:从零到一的全面解析与实战指南
  • win10使用nginx做简单负载均衡测试
  • 省赛备考~全国青少年信息素养大赛-图形化编程复赛/省赛-模拟题-判断质数合数
  • JavaScript 数组方法详解:全面指南
  • 如何优化前端应用中的JavaScript执行效率?
  • 【LinkedList demo 内部类讲说】
  • BI是什么意思?一文讲清BI的概念与应用!
  • LeetCode-前缀和-和为K的子数组
  • 网络学习中通信方面的相关知识、及再次解读B=2W
  • 如果电路教材这么讲--积分运算电路中反馈电容并联电阻的作用
  • 制造业或跨境电商相关行业三种模式:OEM、ODM、OBM