全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-20 6 分钟 ✍️ juanwangdev

条件更新与删除

条件更新与删除是日常开发中最常见的操作。

动态条件更新

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="status != null">status = #{status},</if>
        <if test="updateTime != null">update_time = #{updateTime},</if>
    </set>
    WHERE id = #{id}
</update>
Java
User user = new User();
user.setId(1);
user.setUsername("newname");  // 只更新 username
mapper.updateSelective(user);

注意:set 标签自动移除最后一个逗号,只更新非 null 字段。

批量更新

XML
<update id="batchUpdateStatus" parameterType="java.util.List">
    UPDATE user SET status = #{status}
    WHERE id IN
    <foreach collection="ids" item="id" open="(" separator="," close=")">
        #{id}
    </foreach>
</update>
Java
List<Integer> ids = Arrays.asList(1, 2, 3, 4, 5);
int rows = mapper.batchUpdateStatus(ids, 1);
System.out.println("更新 " + rows + " 条记录");

条件删除

XML
<delete id="deleteByStatus">
    DELETE FROM user WHERE status = #{status}
</delete>

<delete id="deleteBatch">
    DELETE FROM user WHERE id IN
    <foreach collection="ids" item="id" open="(" separator="," close=")">
        #{id}
    </foreach>
</delete>

软删除更新

XML
<update id="softDeleteBatch">
    UPDATE user SET is_deleted = 1, update_time = NOW()
    WHERE id IN
    <foreach collection="ids" item="id" open="(" separator="," close=")">
        #{id}
    </foreach>
</update>

注意:推荐软删除而非物理删除,便于数据恢复与审计。

要点总结

  • 动态更新使用 set + if 标签,只更新非 null 字段
  • 批量更新/删除使用 foreach 构造 IN 条件
  • 软删除通过更新状态字段实现,推荐用于生产环境
  • 所有批量操作需在事务中执行

📝 发现内容有误?点击此处直接编辑

← 上一篇 批量插入数据
下一篇 → SQL 日志输出
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库