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

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

相关文章:

  • 数据库外键
  • 测试W5500的第3步_使用ioLibrary库创建TCPServer
  • Flink并行数据源:ClickSource实现详解
  • RISC-V 开发板 MUSE Pi Pro USB 测试(3.0 U盘,2.0 UVC摄像头)
  • 边缘智能与量子计算双轮驱动:IVX 开启实时 AI 开发新维度
  • Runtipi - 开源个人家庭服务器管理工具
  • 通义灵码助力JavaScript开发:快速获取API与智能编码技巧
  • 【信息系统项目管理师】第12章:项目质量管理 - 26个经典题目及详解
  • 绿盟防火墙6.0.5版本—接入网监平台
  • 对冲策略加仓止损盈思路
  • Hbuilder X4.65新建vue3项目存在的问题以及解决办法
  • 贝叶斯优化+CNN+LSTM=小论文创新点
  • 【LinkedList demo 内部类讲说】
  • 【基于SpringBoot的图书购买系统】深度讲解 分页查询用户信息,分析前后端交互的原理
  • Linux(3)——基础开发工具
  • 威纶通触摸屏IP地址设定步骤及程序下载指南
  • Nginx笔记
  • 传输层协议:UDP和TCP
  • Unity3D仿星露谷物语开发46之种植/砍伐橡树
  • 【Redis】跳表结构
  • 北京人艺新戏《一日顶流》将出现人工智能角色
  • 达恩当选罗马尼亚总统
  • “80后”北大硕士罗婕履新甘肃宁县县委常委、组织部部长
  • 男子聚餐饮酒后身亡,同桌3人被判赔偿近20万元
  • 雅典卫城上空现“巨鞋”形状无人机群,希腊下令彻查
  • 中国情怀:时代记录与家国镜相|澎湃·镜相第三届非虚构写作大赛征稿启事