在一些使用更新的场景中,假设我们更新的对象是一个实体类,我们的mapper是对每一列都进行更新,如果我们只对其中一部分字段进行了值的更新那么其他没有赋值的字段会被默认值给覆盖,
实际上我们需要的效果是我们传入那个字段的值就对那个字段的进行更新否则保持原来的值不变这才是我们想要的效果 可以使用set标签进行解决
这段代码的含义是对一个用户进行更新用户的信息包括id username password
set标签的作用就是进行一个动态的判断只有当if标签里的条件满足之后才会对拼接表达式的内容
如果传入的字段比如password为空则不会对password进行更新
注意:有选择的更新至少更新一列
<update id="updateByUser" resultType="user">
update users
<set>
<if test="username!=null and username !=''">
username=#{username},
</if>
<if test="password!=null and password!=''">
password=#{password},
</if>
</set>
wherr id =#{id}
</update>