动态 SQL(通常指 MyBatis 中的动态 SQL)主要支持以下标签,用于根据不同条件拼接或调整 SQL 语句:
<if>最常用,用于条件判断。
<if test="name != null">
AND name = #{name}
</if>
<choose>、<when>、<otherwise>类似于 Java 中的 switch-case-default。
<choose>
<when test="type == 1">AND type = 1</when>
<when test="type == 2">AND type = 2</when>
<otherwise>AND type = 0</otherwise>
</choose>
<trim>用于去除多余的前缀或后缀(如 AND、OR、逗号等)。
<trim prefix="WHERE" prefixOverrides="AND |OR ">
...
</trim>
<where>智能 WHERE 标签,自动处理开头的 AND / OR。
<where>
<if test="name != null">AND name = #{name}</if>
</where>
<set>用于 UPDATE 语句,自动去除末尾逗号。
<set>
<if test="name != null">name = #{name},</if>
</set>
<foreach>用于遍历集合(如 IN 查询、批量插入)。
<foreach collection="ids" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
<bind>在 SQL 外创建变量,常用于模糊查询。
<bind name="pattern" value="'%' + name + '%'" />
<sql> 与 <include>用于 SQL 片段复用。
<sql id="Base_Column">id, name</sql>
<include refid="Base_Column"/>
✅ 总结常用标签:
if、choose/when/otherwise、trim、where、set、foreach、bind、sql/include
如果你指的是 其他框架(如 MyBatis-Plus、Spring Data JPA、Hibernate) 的动态 SQL,也可以告诉我,我可以补充对应内容。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。