MybatisPlus逻辑删除

逻辑删除就是基于代码逻辑模拟删除效果,但并不会真正删除数据。思路如下:

1.在表中添加一个字段标记数据是否被删除

2.当删除数据时把标记置为1

3.查询时只查询标记为0的数据

 例如逻辑删除字段为deleted,那么删除操作的sql语句为:

UPDATE user SET deleted = 1 WHERE id = 1 AND deleted = 0

对应的查询操作的语句也会进行相应的更改:

SELECT * FROM user WHERE deleted = 0

这样才能保证查到的数据是未删除的数据。

MybatisPlus提供了逻辑删除功能,无需改变方法调用的方式,而是在底层帮我们自动修改CRUD的语句。我们要做的就是在application.yaml文件中配置逻辑删除的字段名称和值即可:

      logical-delete-field: deleted #逻辑删除字段
      logical-delete-value: 1 #逻辑已删除值(默认为1)
      logical-not-delete-value: 0 #逻辑未删除值(默认为0)

这样MybatisPlus就可以自动帮我们实现,不需要我们人为操作。

但是逻辑删除本身也有自己的问题,比如:

会导致数据库表垃圾数据越来越多,影响查询效率

SQL中全都需要对逻辑删除字段做判断,影响查询效率

因此,我不太推荐采用逻辑删除功能,如果数据不能删除,可以采用把数据迁移到其他表的方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值