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

MyBatis 动态 SQL 语法

1. <where> 标签

  • 自动处理 WHERE 关键字,避免开头出现多余的 AND 或 OR

  • 如果内部条件全部为空,则不会生成 WHERE

SELECT * FROM sf_user
<where><if test="user_name != null">user_name LIKE CONCAT('%', #{user_name}, '%')</if><if test="user_state != null">AND user_state = #{user_state}</if>
</where>

2. <trim> 标签

  • 可以自定义前缀和去除多余的关键字。

  • prefix:添加前缀

  • prefixOverrides:去除开头指定的字符串(如 ANDOR

SELECT * FROM sf_user
<trim prefix="WHERE" prefixOverrides="AND"><if test="user_name != null">AND user_name LIKE CONCAT('%', #{user_name}, '%')</if><if test="user_state != null">AND user_state = #{user_state}</if>
</trim>

3. <set> 标签(用于 UPDATE)

  • 自动处理 SET 子句,去除末尾多余的逗号。

<update id="updateAuthorIfNecessary">UPDATE Author<set><if test="username != null">username = #{username},</if><if test="password != null">password = #{password},</if><if test="email != null">email = #{email},</if><if test="bio != null">bio = #{bio}</if></set>WHERE id = #{id}
</update>

4. <foreach> 标签(遍历集合)

  • 常用于 IN 查询。

  • collection:集合参数名

  • item:遍历时的元素变量名

  • open/close:开始和结束符号

  • separator:元素分隔符

<select id="selectPostIn" resultType="domain.blog.Post">SELECT * FROM POST PWHERE ID IN<foreach item="val" collection="list" open="(" separator="," close=")">#{val}</foreach>
</select>

5. <sql> 与 <include> 标签

  • <sql>:定义可重用的 SQL 片段

  • <include>:引用已定义的 SQL 片段

<sql id="query_user_where"><!-- 条件片段 -->
</sql>SELECT * FROM sf_user
<trim prefix="WHERE" prefixOverrides="AND"><include refid="query_user_where"/>
</trim>

⚠️ 注意点

  • 使用 #{} 进行参数占位,避免 SQL 注入。

  • 在 <if> 中判断字段是否为 null 或空字符串。

  • <where> 和 <set> 会自动处理语法冗余,推荐使用。

http://www.dtcms.com/a/597988.html

相关文章:

  • 医院慢病电话随访:AI 问血压→异常转医生,0 人工
  • 网站建设采购项目合同书python入门基础教程
  • ajxa实例操作
  • 金融监管制度问答助手项目学习笔记(三)----RAFT微调
  • 【Qt】RK3576配置Qt5、GStreamer
  • 做消费金融网站价格做网站要用到什么软件
  • 无锡餐饮网站建设网页升级未成年人自行离开
  • CANOE概念与应用
  • 800V超充与V2G时代,AN3V ASIC霍尔传感器如何守护电流安全?
  • 佛山新网站建设哪家好html5特效网站
  • 箱线图生成器
  • 上海网站建设模板站霸网络网页设计与网站开发经济可行性
  • kuboard报错etcd无法访问 etcd 容量 大于 2G 导致报错了 etcdserver: mvcc: database space exceeded
  • 网站导航规划自适应文章网站模板
  • linux 系统查看进程占用物理内存大小方法
  • Electron 快速入门手册
  • AI Agent 之 ReAct 范式:推理与行动的完美结合
  • 杭州绿城乐居建设管理有限公司网站如何网上查个人房产信息
  • ZED2i ROS消息
  • DNS主从服务
  • 怎样做网站3天赚100万wordpress静态页面找不到
  • 辽宁网站建设企业网站 内容 制作
  • 高频面试八股文用法篇(二十)微服务RPC
  • Electron 文件选择功能实战指南适配鸿蒙
  • 在Java中调用MATLAB函数的完整流程:从打包-jar-到服务器部署
  • 破局新能源暗访:卡索(CASO)汽车调查的“三重洞察”艺术
  • 网站建设案例市场wordpress时间文件夹
  • LINUX拯救模式
  • iis 发布网站内部服务器错误推广普通话手抄报
  • 1个ip可以做几个网站吗计算机it培训班