delete 删除语句
delete 用于删除数据,核心是掌握条件控制与软删除实现。
基础删除
XML
<delete id="deleteById">
DELETE FROM user WHERE id = #{id}
</delete>
Java
int rows = mapper.deleteById(id);
// rows 为影响行数,0 表示未删除任何数据
条件删除
XML
<delete id="deleteByEmail">
DELETE FROM user WHERE email = #{email}
</delete>
<delete id="deleteBatch">
DELETE FROM user WHERE id IN
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
软删除
方式一:更新状态字段
XML
<update id="softDeleteById">
UPDATE user SET status = 0, update_time = #{updateTime}
WHERE id = #{id}
</update>
方式二:使用逻辑删除字段
XML
<select id="selectActive" resultMap="BaseResultMap">
SELECT * FROM user WHERE is_deleted = 0
</select>
注意:软删除推荐在查询时自动过滤已删除数据,避免物理删除后数据丢失。
级联删除
XML
<delete id="deleteUserAndOrders">
DELETE u, o FROM user u
LEFT JOIN orders o ON u.id = o.user_id
WHERE u.id = #{id}
</delete>
注意:级联删除需谨慎使用,推荐通过外键约束或业务层控制删除顺序。
要点总结
- delete 返回影响行数,0 表示未删除任何数据
- 批量删除使用 foreach 标签构造 IN 条件
- 软删除通过更新状态字段或逻辑删除字段实现
- 级联删除需控制删除顺序,避免数据不一致
📝 发现内容有误?点击此处直接编辑