详细介绍:MyBatis 动态 SQL 语法
1. <where> 标签
自动处理
WHERE关键字,避免开头出现多余的AND或OR。如果内部条件全部为空,则不会生成
WHERE。
SELECT * FROM sf_user
user_name LIKE CONCAT('%', #{user_name}, '%')
AND user_state = #{user_state}
2. <trim> 标签
可以自定义前缀和去除多余的关键字。
prefix:添加前缀prefixOverrides:去除开头指定的字符串(如AND、OR)
SELECT * FROM sf_user
AND user_name LIKE CONCAT('%', #{user_name}, '%')
AND user_state = #{user_state}
3. <set> 标签(用于 UPDATE)
自动处理
SET子句,去除末尾多余的逗号。
UPDATE Author
username = #{username},
password = #{password},
email = #{email},
bio = #{bio}
WHERE id = #{id}
4. <foreach> 标签(遍历集合)
常用于
IN查询。collection:集合参数名item:遍历时的元素变量名open/close:开始和结束符号separator:元素分隔符
5. <sql> 与 <include> 标签
<sql>:定义可重用的 SQL 片段<include>:引用已定义的 SQL 片段
SELECT * FROM sf_user
⚠️ 注意点
使用
#{}进行参数占位,避免 SQL 注入。在
<if>中判断字段是否为null或空字符串。<where>和<set>会自动处理语法冗余,推荐使用。

浙公网安备 33010602011771号