Mybatis-Plus(扩展篇 ==> 逻辑删除

本章导学:

  • 什么是逻辑删除?
  • 为什么要使用逻辑删除
  • 基于SpringBoot实现逻辑删除
    • 为实体类新增逻辑删除属性
    • 同步数据库新增列名delete 

 一、什么是逻辑删除

所谓逻辑删除,并不是真正意义上的删除,数据还是存在于数据库中只是对外不可见了而已。

而物理删除,则是把数据从磁盘上真正的删除了(delete on disc,找不回来啦~) 

注意:

  • 逻辑删除是为了方便数据恢复和保护数据本身价值等等的一种方案,但实际就是删除。
  • 如果你需要频繁查出来看就不应使用逻辑删除,而是以一个状态去表示。

 

二、为什么要使用逻辑删除 

我们看以下一个场景:

小王从公司离职了,此时公司的数据库里把有关小王的信息全都清除掉了。但是在月末老板对账的时候,发现流水对不上啦,因为小王为公司带来的流水数据也一同被删除掉了。

为了防止这种情况的出现,我们可以为员工表在增加一个字段delete(1代表被删除,0代表没删除) 

这样我们的业绩流水就可以对上了,后续如果我们查看员工表还是按照select * from employer这样去查,本来离职的小王也会被查询出来。所以此时我们要多加一个条件后再去进行查询

select * from employer where deleted = 0;

我们再分析一个场景:

比如商城搞促销活动,上架了一系列特价商品。此时活动结束了,我们如果就直接把这些特价商品给删除了,以后再有活动需要上架这一批商品难道我们还要去数据库重新添加这部分商品?显然这是十分不合理的操作,对于这个情况,我们也可以去使用逻辑删除,把商品逻辑删除(deleted设置为1),后续需要重新上架的时候,把deleted改回0就好了。

 

三、基于SpringBoot实现逻辑删除 

3.1、为实体类新增逻辑删除属性

 

我们用@TableLogc注解就可以指定当前属性为逻辑删除的字段

value表示未删除

delaval表示删除 

我们也可以在yml配置文件中指定删除与未删除的表示数

 

配置后,我们就可以把@TableLogic的形参去掉了 

3.2、同步数据库新增列名delete 

3.3、测试并观察执行的SQL语句 

 

生成的SQL如下

 此时就实现了我们所需要的逻辑删除效果

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白日日白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值