携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情
1.什么是逻辑删除
对数据库数据的删除可以分为物理删除和逻辑删除。物理删除其实很好理解,就是将数据从数据库表里面删除,具体的SQL语句是delete from 表名 where 删除条件。逻辑删除是什么呢?逻辑删除本质上是修改,它并没有真的将数据删除,而是修改记录里面的标志。那这个标志是什么呢?其实就是数据库表里的一个字段,用这个这段来表明这条记录是否被删除。逻辑删除的好处在于如果误删,可以很快将数据恢复过来。
2.mybatisplus怎么设置逻辑删除
我们先来准备一张数据库表,这张表如下:
接着我们准备一下实体类
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代表没删除。
如果你添加了逻辑删除的注解,那么接下来你会发现,你执行查询操作的时候,会默认加上一个查询条件is_deleted=0,如下图所示:
到了这里,可能有同学有疑问,那就是mybatisplus默认1代表逻辑删除,0代表未逻辑删除这个不符合习惯,想修改,可以吗?答案是可以的,你可以进行配置,配置方案如下:
mybatis-plus:
global-config:
db-config:
# 1 代表已删除,不配置默认是1,也可修改配置
logic-delete-value: 1
# 0 代表未删除,不配置默认是0,也可修改配置
logic-not-delete-value: 0