MybatisPlus的逻辑删除

395 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情

1.什么是逻辑删除

对数据库数据的删除可以分为物理删除和逻辑删除。物理删除其实很好理解,就是将数据从数据库表里面删除,具体的SQL语句是delete from 表名 where 删除条件。逻辑删除是什么呢?逻辑删除本质上是修改,它并没有真的将数据删除,而是修改记录里面的标志。那这个标志是什么呢?其实就是数据库表里的一个字段,用这个这段来表明这条记录是否被删除。逻辑删除的好处在于如果误删,可以很快将数据恢复过来。

2.mybatisplus怎么设置逻辑删除

我们先来准备一张数据库表,这张表如下:

image.png 接着我们准备一下实体类

public class User { 
@TableId("uid") 
private Long id; //表里的数据类型是bigint 
//指定属性所对应的字段名 
@TableField("user_name") 
private String name; 
private Integer age; 
private String email; 
@TableLogic 
private Integer isDeleted; 
}

大家把目光放到实体类的最后一行,我们在isDeleted属性上面加了注解@TableLogic ,代表了这个属性所对应的数据表字段的意义是逻辑删除。

3.测试

如果你调用了删除语句,你看下控制台,你会发现实际上执行的是更新语句,将is_deleted更新为1。mybatisplus的逻辑删除,默认1代表删除,0代表没删除

image.png 如果你添加了逻辑删除的注解,那么接下来你会发现,你执行查询操作的时候,会默认加上一个查询条件is_deleted=0,如下图所示:

image.png 到了这里,可能有同学有疑问,那就是mybatisplus默认1代表逻辑删除,0代表未逻辑删除这个不符合习惯,想修改,可以吗?答案是可以的,你可以进行配置,配置方案如下:

mybatis-plus: 
  global-config: 
    db-config: 
      # 1 代表已删除,不配置默认是1,也可修改配置 
      logic-delete-value: 1 
      # 0 代表未删除,不配置默认是0,也可修改配置 
      logic-not-delete-value: 0