SET子句 ‹set›

Exisi 2021-03-27 07:29:12
Categories: Tags:
  • <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>元素会自动移除最后一个更新字段后面的逗号。