mybatisplus 逻辑删除时version不更新怎么办
时间: 2024-09-28 22:07:30 浏览: 29
MybatisPlus在启用逻辑删除功能时,如果希望在标记逻辑删除(比如通过设置`deleteFlag`字段为非0值)的同时避免自动更新版本号(如`version`字段),你可以自定义一个拦截器或者配置项来控制这个行为。
1. **自定义全局拦截器**:
创建一个全局拦截器,在拦截器中检查是否需要更新版本号,如果是逻辑删除操作,则可以忽略这个步骤。例如:
```java
@GlobalTransactional(rollbackFor = Exception.class)
public Object intercept(Joinpoint joinPoint, Model model) {
if (model.getEntity().getDeleteFlag() != null && model.getEntity().getDeleteFlag()) {
return joinPoint.proceed();
} else {
// 更新其他字段但跳过version字段的更新
return updateModel(joinPoint, model, new Column[]{...}, Collections.singletonList("version"));
}
}
```
2. **配置文件设置**:
在MybatisPlus的配置文件`mybatis-plus.properties`或`application.yml`中,你可以关闭默认的版本号更新策略:
```
global-config:
db-column-prefix: true # 如果不需要版本列前缀
table-data-id-name: id # 版本列名,如果不希望修改默认的version
version-updatable: false # 禁止版本字段自动更新
```
记得在实际操作中,根据项目需求选择适合的方式,并确保在业务上逻辑删除和版本控制不会混淆。
阅读全文