MyBatis-Plus 需要物理删除
时间: 2025-02-04 15:27:00 浏览: 65
MyBatis-Plus是一个基于MyBatis的简化持久层开发工具,它提供了更多的便利性和扩展性。当涉及到数据删除操作时,通常默认的行为是在数据库层面软删除,也就是通过添加一个is_delete字段(如 deleted_at)来标记某个记录是否已被删除,而不是直接从表中移除。
如果你想实现物理删除,即真正的从数据库表中删除数据,MyBatis-Plus并没有直接提供这样的功能,因为这并不符合它的设计原则,即尽可能地避免操作底层数据库。但是,你可以通过自定义SQL或者手动编写JPA或者Hibernate等 ORM框架的方式来实现物理删除:
1. **自定义方法**:在Mapper接口中添加一个方法,比如`deleteByIdWith physicDelete`,并配置具体的 SQL 删除语句。
```java
@Mapper
public interface UserMapper {
@Delete("DELETE FROM user WHERE id = #{id}")
int deleteById(int id);
// 物理删除
@Delete("DELETE FROM user WHERE id = #{id} AND is_delete = 0")
int deleteUserByIdWithPhysicDelete(int id);
}
```
2. **启用全局配置**:如果所有实体都需要物理删除,可以在全局配置文件中设置删除策略。
3. **手动代码控制**:在业务逻辑中,判断需要物理删除再进行调用相应的方法。
需要注意的是,物理删除可能导致一些潜在问题,例如事务回滚后的恢复困难、数据审计跟踪复杂等。所以在实际项目中,除非有特殊需求,否则推荐继续使用默认的软删除方式。
阅读全文
相关推荐















