Mybatis-plus中的DefaultSqlInjector有什么作用
时间: 2024-06-12 09:04:15 浏览: 11
Mybatis-plus中的DefaultSqlInjector是一个默认的SQL注入器,它的作用是提供了一些常用的SQL操作方法,例如:插入、删除、更新、查询等。通过DefaultSqlInjector可以方便地进行增删改查操作,而不需要手动编写SQL语句,大大提高了开发效率。
DefaultSqlInjector中提供的方法都是基于Mybatis-plus的BaseMapper接口的方法实现的,因此可以直接在Mapper接口中使用这些方法,而不需要再手动编写SQL语句。同时,DefaultSqlInjector还支持自定义SQL注入,可以根据具体的业务需求编写自己的SQL注入方法,以满足不同的需求。
总之,DefaultSqlInjector是Mybatis-plus中非常重要的一个组件,它提供了一些常用的SQL操作方法,可以帮助我们快速开发出高效、可靠的数据访问层。
相关问题
mybatis-plus配置模板
以下是一个简单的 Mybatis-Plus 配置模板:
```xml
<!-- 配置 Mybatis-Plus -->
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath*:mapper/**/*.xml" />
<property name="typeHandlersPackage" value="com.example.mybatisplus.typehandler" />
<property name="globalConfig" ref="globalConfig" />
</bean>
<!-- 配置 Mybatis-Plus 全局配置 -->
<bean id="globalConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig">
<property name="dbConfig" ref="dbConfig" />
<property name="sqlInjector" ref="sqlInjector" />
<property name="idType" value="auto" />
<property name="fieldStrategy" value="not_null" />
<property name="tablePrefix" value="t_" />
<property name="logicDeleteValue" value="1" />
<property name="logicNotDeleteValue" value="0" />
</bean>
<!-- 配置 Mybatis-Plus 数据库配置 -->
<bean id="dbConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig.DbConfig">
<property name="logicDeleteField" value="deleted" />
</bean>
<!-- 配置 Mybatis-Plus SQL 注入器 -->
<bean id="sqlInjector" class="com.baomidou.mybatisplus.core.injector.DefaultSqlInjector">
<property name="metaObjectHandler" ref="metaObjectHandler" />
</bean>
<!-- 配置 Mybatis-Plus 元对象处理器 -->
<bean id="metaObjectHandler" class="com.example.mybatisplus.handler.MyMetaObjectHandler" />
```
其中,`sqlSessionFactory` 是 Mybatis-Plus 的核心配置,`mapperLocations` 配置了 Mapper 文件的位置,`typeHandlersPackage` 配置了 TypeHandler 的位置,`globalConfig` 配置了 Mybatis-Plus 的全局配置。`dbConfig` 配置了数据库相关的配置,`sqlInjector` 配置了 SQL 注入器,`metaObjectHandler` 配置了元对象处理器。
如何让mybatis-plus 逻辑删除需要在特定的时候不生效
在 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` 即可关闭逻辑删除。