mybatis-plus:逻辑删除
不做真正的删除,在查询时添加一个where条件
例如在某宝上有一条不可描述的购买信息不想被看到,你要删除他,但是从平台的角度考虑是不能随便就彻底的删除掉数据的,那么有没有一个两个都可以满足的解决方式呢,答案是有的——逻辑删除,不做真正意义的删除,在数据库中用一个字段做专门的标记,原本查询的sql语句就变成了这样:
select * from tableName where 原先的查询条件 and 用来标记的字段=设定的用于标记删除的值
而用户的删除行为也变成了update: update tablename set 用来标记的字段=设定的用于标记删除的值 where 用于删除的条件
配置
在application.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注解
@TableLogic
private Integer deleted;
运行测试:
//根据id删除
@Test
void testDeleteById(){
autoMapper.deleteById(25);
}
运行测试方法,deleted字段被更新 以后的查找方法会被加上一个where条件 deleted=0;
从逻辑上实现了数据的删除