- <set> 通常用于在 SQL 语句中添加需要更新的字段。它可以自动移除 SET 关键字前面多余的逗号,并在必要的情况下添加 SET 关键字。
- 没有使用<set> + <if> 标签时,如果有一个参数为 null,都会导致错误
示例
<update id="updateStudent" parameterType="Student">
UPDATE student
SET studentName = #{studentName},
studentSex = #{studentSex},
WHERE studentID = #{studentID};
</update>
- 使用if标签修改后,如果某项为null则无法处理多余的逗号
示例
<update id="updateStudent" parameterType="Student">
UPDATE student
SET
<if test="studentName!=null and studentName!='' ">
studentName = #{studentName},
</if>
<if test="studentSex!=null and studentSex!='' ">
studentSex = #{studentSex},
</if>
WHERE studentID = #{studentID};
</update>
- 使用set+if标签修改后,set动态包含if标签中需要更新的列,如果某项为null则忽略其它不更新的列,并删除末尾多余的逗号
示例
<update id="updateStudent" parameterType="Student">
UPDATE student
<set>
<if test="studentName!=null and studentName!='' ">
studentName = #{studentName},
</if>
<if test="studentSex!=null and studentSex!='' ">
studentSex = #{studentSex},
</if>
</set>
WHERE studentID = #{studentID};
</update>
注
<set>元素只有在其中包含至少一个子元素时才会生效。如果所有子元素都没有生效,则<set>元素会被忽略。同时,在最后生成的SQL语句中,最后一个更新字段后面不应该有逗号,因此<set>元素会自动移除最后一个更新字段后面的逗号。