当 update 语句中没有使用 if 标签时,如果有一个参数为 null,都会导致错误。使用set标签可以将动态的配置 SET 关键字,并剔除追加到条件末尾的任何不相关的逗号。使用 if+set 标签修改后,如果某项为 null 则不进行更新,而是保持数据库原值。如下示例:
@update("<script>"+
" update Student "+
" <set> "+
" <if test="title != null"> "+
" title = #{title}, "+
" </if>"+
" <if test="content != null"> "+
" content = #{content}, "+
" </if> "+
" <if test="owner != null"> "+
" owner = #{owner} "+
" </if> "+
" </set> "+
" where id = #{id} "+
"/script")
void updateStudent(@param("title") string title,@param("owner") string owner,@param("id") int id)