如何让mybatis-plus 逻辑删除需要在特定的时候不生效
时间: 2023-11-27 13:51:10 浏览: 76
在 Mybatis-Plus 中,可以通过配置 GlobalConfig 实现逻辑删除的开关控制。具体步骤如下:
1. 创建 GlobalConfig 对象
```java
GlobalConfig globalConfig = new GlobalConfig();
```
2. 配置逻辑删除
```java
globalConfig.setLogicDeleteValue("1"); // 设置逻辑删除值为1
globalConfig.setLogicNotDeleteValue("0"); // 设置逻辑未删除值为0
```
3. 配置逻辑删除开关
```java
// 设置逻辑删除开关(默认为 true)
globalConfig.setSqlInjector(new LogicSqlInjector() {
@Override
public List<AbstractMethod> getMethodList(Class<?> mapperClass) {
List<AbstractMethod> methodList = super.getMethodList(mapperClass);
methodList.add(new MyLogicDeleteByIdWithFill());
return methodList;
}
});
```
在上面的代码中,我们通过设置 `setSqlInjector` 方法中的 `LogicSqlInjector` 来配置逻辑删除开关。默认情况下,逻辑删除开关是打开的。如果要关闭逻辑删除,只需要将 `setSqlInjector` 方法中的 `LogicSqlInjector` 替换成默认的 `DefaultSqlInjector` 即可。
另外,如果需要在特定的时候不生效,可以通过动态修改逻辑删除开关的方式实现。具体方法是修改 `globalConfig` 对象中的 `setSqlInjector` 方法中的 `LogicSqlInjector` 对象。例如,在某个特定的时候,将 `LogicSqlInjector` 替换为默认的 `DefaultSqlInjector` 即可关闭逻辑删除。