# MyBatis-Plus教程 - 10 逻辑删除

什么是逻辑删除?

  • 物理删除 :删除数据的时候,是从数据库中直接删除数据;

  • 逻辑删除 :删除数据的时候,没有从数据库删除数据,而是一列数据来标识数据被删除了,例如表中定义一个字段叫 deleted,值为0表示数据有效,值为1表示数据已经被删除。

逻辑删除利于数据的恢复,但是会长期保留大量数据,查询的时候也需要过滤掉这些数据,对于带有唯一性约束的字段,逻辑删除的记录仍然存在,可能会影响插入新数据。使用的时候需要权衡利弊。

# 10.1 实现逻辑删除

下面看一下在 MyBatis-Plus 中如何实现逻辑删除。

# 1 数据库表添加字段

先给数据库表添加一个用于标识逻辑删除的字段,我这里起名叫 deleted,名字自定义。

ALTER TABLE tb_user
ADD COLUMN deleted TINYINT(1) DEFAULT 0;
1
2

并设置默认值为0,表示没有被删除。

# 2 修改pojo

修改数据库表对应的实体类,添加 @TableLogic 注解,标识是用于逻辑删除的字段。

内容未完......