1.逻辑删除顾名思义就是删除但不完全删除,删除之后页面不展示数据,但数据库的数据还存在,起到一个防止重要数据丢失作用,一般来说项目中是普遍存在逻辑删除这项功能的,设计数据库时建议添加一个逻辑删除字段。
2.逻辑删除说明:
- 插入: 不作限制
- 查找: 追加 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
3.字段类型支持说明:
- 支持所有数据类型(推荐使用
Integer
,Boolean
,LocalDateTime
) - 如果数据库字段使用
datetime
,逻辑未删除值和已删除值支持配置为字符串null
,另一个值支持配置为函数来获取值如now()
附录:
- 逻辑删除是为了方便数据恢复和保护数据本身价值等等的一种方案,但实际就是删除。
- 如果你需要频繁查出来看就不应使用逻辑删除,而是以一个状态去表示。
4.实现步骤如下:
4.1 导入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
4.2 配置yml
mybatis-plus:
global-config:
db-config:
logic-delete-value: 1 # 逻辑已删除值(默认为 1)
logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
4.3 实体类设置注解
@TableLogic
private Integer show_status;
最后调用sql方法,删除的语句就会变成更新的语句,以此完成逻辑删除!!!想学习更多的mybatis-plus知识可以前往baomidou官网学习