逻辑删除
2021-06-25 09:29:21 星期五
物理删除 :从数据库中直接移除
逻辑删除 :再数据库中没有被移除,而是通过一个变量来让他失效! deleted = 0 => deleted = 1
类似于回收站,
只对自动注入的sql起效:
- 插入: 不作限制
- 查找: 追加where条件过滤掉已删除数据,且使用 wrapper.entity 生成的where条件会忽略该字段
- 更新: 追加where条件防止更新到已删除数据,且使用 wrapper.entity 生成的where条件会忽略该字段
- 删除: 转变为 更新
- 删除:
update user set deleted=1 where id = 1 and deleted=0 - 查找:
select id,name,deleted from user where deleted=0
设置表结构


设置实体类属性
@TableLogic注解是逻辑删除,并不会永久删除数据,实体类加上这个注解再执行删除方法的时候会变成修改。前台再根据所加注解字段进行显隐即可达到逻辑删除效果

配置类

执行删除

再次查询时,增加where条件,记录依旧在数据库,但是值确已经变化了!


sql性能分析
–作用:性能分析拦截器,用于输出每条 SQL 语句及其执行时间
导入插件
@Bean
// 设置dev test环境开启,保证运行效率
@Profile({"dev","test"})
public PerformanceInterceptor testPerformanceInterceptor(){
PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
// 设置sql执行的最大时间(ms),如果超过了则不执行
performanceInterceptor.setMaxTime(100);
// 是否格式化代码
performanceInterceptor.setFormat(true);
return performanceInterceptor;
}
####设置环境profiles: active: dev #设置测试环境
执行代码

执行失败的错误
