物理删除:直接在硬盘中删除,彻底删除。
逻辑删除:并没有真正的删除,只是通过添加一个标志位,通过改变标志位的值,来判断数据是否被删除。
MybatisPlus实现逻辑删除:
1.实体类属性加上@TableLogic注解
// 开启逻辑删除
@TableLogic
// 开启自动填充
@TableField(fill = FieldFill.INSERT)
private Integer deleted;
2.加入逻辑删除组件
// 加入逻辑删除组件到容器中
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}
效果:当通过id删除某条数据时,在数据库中仅仅改变标志位deleted的值,并没有真正删除数据,然而查询的时候,不会显示被逻辑删除的值。
原理:
逻辑删除时执行的sql语句:update table set deleted=1(deleted初始值为0)。
查询时执行的sql语句:select * from table where deleted=0;