update 更新语句
update 用于更新数据,核心是动态字段更新与条件控制。
基础更新
XML
<update id="updateById" parameterType="com.example.entity.User">
UPDATE user SET
username = #{username},
email = #{email},
update_time = #{updateTime}
WHERE id = #{id}
</update>
Java
int rows = mapper.updateById(user);
// rows 为影响行数
动态字段更新
XML
<update id="updateSelective" parameterType="com.example.entity.User">
UPDATE user
<set>
<if test="username != null">username = #{username},</if>
<if test="email != null">email = #{email},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</set>
WHERE id = #{id}
</update>
<set> 标签自动处理 SET 关键字与多余逗号。
注意:不使用 set 标签时,最后一个 if 后面不能有逗号,否则 SQL 语法错误。
条件更新
XML
<update id="updateByEmail">
UPDATE user SET username = #{username}
WHERE email = #{email} AND status = 1
</update>
批量更新
XML
<update id="batchUpdate" parameterType="java.util.List">
<foreach collection="list" item="user" separator=";">
UPDATE user SET username = #{user.username}
WHERE id = #{user.id}
</foreach>
</update>
注意:批量更新需在数据库连接 URL 中添加
allowMultiQueries=true开启多语句执行。
要点总结
- update 返回影响行数
- set 标签自动处理 SET 关键字与逗号
- if 标签实现动态字段更新,只更新非空字段
- 批量更新需开启 allowMultiQueries
📝 发现内容有误?点击此处直接编辑