Java中逻辑删除和物理删除有什么区别?一文看懂
作者:小果子^_^
还在纠结Java里的逻辑删除和物理删除吗?本文用大白话讲清两者的核心区别:逻辑删除只是打个标记还能恢复,物理删除才是彻底抹掉数据,还手把手教你配置逻辑删除,包括yml设置、实体类注解和拦截器注入,看完就能上手
java 物理删除和逻辑删除
逻辑删除:
- 文件没有被真正的删除,只不过是文件名的第一个字节被改成操作系统无法识别的字符,
- 通常这种删除操作是可逆的,就是说用适当的工具或软件可以把删除的文件恢复出来。
物理删除:
- 指文件存储所用到的磁存储区域被真正的擦除或清零,这样删除的文件是不可以恢复的物理删除是计算机处理数据时的一个概念。
- 与物理删除相对应的是逻辑删除。
- 逻辑删除就是对要要删除的数据打上一个删除标记,在逻辑上是数据是被删除的,但数据本身依然存在!而物理删除则是把数据从介质上彻底删除掉。
配置逻辑删除的步骤:
1.在配置文件yml中应该配置的信息
mybatis-plus:
global-config:
db-config:
logic-delete-value: 1 # 逻辑已删除值(默认为 1),该具体删除值和数据库中的表数据对应即可
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0),该具体删除值和数据库中的表数据对应即可2.添加实体类注解
@TableLogic private Integer delFlag;
3.对于逻辑删除拦截器bean的注入方式
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* mybatis-plus配置
*
* @author gsl
*/
@Configuration
public class MybatisPlusConfig {
/**
* 在配置文件中注册删除组件
* @return
*/
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}
}
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
