mybatis-plus 逻辑删除

mybatis-plus:逻辑删除

不做真正的删除,在查询时添加一个where条件

例如在某宝上有一条不可描述的购买信息不想被看到,你要删除他,但是从平台的角度考虑是不能随便就彻底的删除掉数据的,那么有没有一个两个都可以满足的解决方式呢,答案是有的——逻辑删除,不做真正意义的删除,在数据库中用一个字段做专门的标记,原本查询的sql语句就变成了这样:

select * from tableName where 原先的查询条件 and 用来标记的字段=设定的用于标记删除的值

而用户的删除行为也变成了update: update tablename set 用来标记的字段=设定的用于标记删除的值 where 用于删除的条件

配置

在application.yml配置文件中配置

1
2
3
4
5
6
yml复制代码mybatis-plus:
global-config:
db-config:
logic-delete-field: flag # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)

修改数据库字段

新增一个deleted字段,注意不能使用delete会报错

修改实体类Car并在该属性上打上@TableLogic注解

1
2
java复制代码@TableLogic
private Integer deleted;

运行测试:

1
2
3
4
5
java复制代码//根据id删除
@Test
void testDeleteById(){
autoMapper.deleteById(25);
}

运行测试方法,deleted字段被更新 以后的查找方法会被加上一个where条件 deleted=0;

从逻辑上实现了数据的删除

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%