逻辑删除就是基于代码逻辑模拟删除效果,但并不会真正删除数据。思路如下:
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中全都需要对逻辑删除字段做判断,影响查询效率
因此,我不太推荐采用逻辑删除功能,如果数据不能删除,可以采用把数据迁移到其他表的方法。
标签:逻辑,MybatisPlus,删除,deleted,查询,数据 From: https://blog.csdn.net/qq_50684356/article/details/139723092