mybatisplus中的getOne如何去掉自带的is_deleted = 0的条件
时间: 2024-09-11 09:07:47 浏览: 74
Mybatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。`getOne` 方法是 Mybatis-Plus 提供的一个便捷方法,用于根据主键查询单个记录。在 Mybatis-Plus 的全局配置中,存在一个逻辑删除的功能,它会在 SQL 查询时自动添加 `is_deleted = 0` 的条件,以排除逻辑删除的记录。
如果你想要在调用 `getOne` 方法时去掉这个默认的 `is_deleted = 0` 的条件,可以通过配置实现。具体步骤如下:
1. 在你的 Mybatis-Plus 配置类中,关闭全局逻辑删除功能。这可以通过设置 `LogicSqlInjector` 的 `properties` 属性来实现。
2. 确保你的全局配置类继承了 `MybatisPlusConfigurerAdapter` 或者实现了 `MybatisPlusConfigurer` 接口,并重写相应的方法来设置逻辑删除的全局属性。
示例代码如下:
```java
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.extension.configurers.ISqlInjector;
import com.baomidou.mybatisplus.extension.plugins.inner.LogicSqlInjector;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan("你的mapper接口所在的包路径")
public class MybatisPlusConfig {
// 注入分页插件
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
// 关闭全局逻辑删除
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector() {
@Override
public void inspectInject(MapperBuilderAssistant builderAssistant, Class<?> mapperClass) {
// 重写逻辑,不进行逻辑删除的自动注入
}
};
}
}
```
通过上述配置,就可以在全局范围内关闭 Mybatis-Plus 的逻辑删除功能,进而去掉 `getOne` 方法自带的 `is_deleted = 0` 的条件。
阅读全文