mybatis 配置逻辑删除
时间: 2025-07-06 18:47:13 浏览: 8
### MyBatis Plus 中配置逻辑删除功能
#### 实体类配置
为了启用逻辑删除,在实体类中需要定义一个字段用于标记该条记录是否被删除。通常这个字段名为`deleted`,其值为 `0` 表示未删除,而当执行删除操作时将其更新为 `1` 来表示已被删除。
```java
import com.baomidou.mybatisplus.annotation.TableLogic;
...
@TableLogic
private Integer deleted;
```
此代码片段展示了如何在实体类属性上应用 `@TableLogic` 注解以指定逻辑删除字段[^1]。
#### 数据库表设计
数据库表也需要有一个对应的列来存储逻辑删除状态的信息。例如:
| id | name | ... | deleted |
|----|------------|-----|---------|
| 1 | exampleName| ... | 0 |
其中 `deleted` 列用来保存逻辑删除的状态,默认情况下它的初始值应设为 `0`,即代表这条数据尚未被删除[^2]。
#### 应用程序配置
对于 Spring Boot 项目而言,可以在 `application.yml` 文件里加入如下所示的相关配置项,从而使得整个应用程序范围内都遵循统一的逻辑删除规则:
```yaml
mybatis-plus:
global-config:
db-config:
logic-delete-value: 1 # 已经被逻辑删除的数据所使用的标志位
logic-not-delete-value: 0 # 正常存在的数据所使用的标志位
logic-delete-field: deleted # 字段名, 默认是 "del_flag"
```
这段 YAML 配置指定了全局性的逻辑删除参数设置,包括哪些数值对应于已删除/未删除的情况以及具体使用哪个字段来进行判断[^3][^4]。
#### 使用方式
一旦完成了以上几步的基础准备工作之后,就可以像平常一样调用诸如 `deleteById()` 这样的接口来做所谓的“删除”动作了;实际上这只会改变目标对象上的那个特定布尔型成员变量(`deleted`) 的取值而已,并不会真正意义上把那行记录给移除掉。此外,在做查询的时候框架也会自动过滤掉那些已经被标记成已删除的对象。
阅读全文
相关推荐




















