|
@@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.MybatisConfiguration;
|
|
import com.baomidou.mybatisplus.core.config.GlobalConfig;
|
|
import com.baomidou.mybatisplus.core.config.GlobalConfig;
|
|
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
|
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
|
import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
|
|
import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
|
|
|
|
+import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
|
|
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
|
|
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
|
|
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
|
|
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
|
|
import org.apache.ibatis.annotations.Mapper;
|
|
import org.apache.ibatis.annotations.Mapper;
|
|
@@ -67,6 +68,7 @@ import org.springframework.util.StringUtils;
|
|
import javax.sql.DataSource;
|
|
import javax.sql.DataSource;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Optional;
|
|
import java.util.Optional;
|
|
|
|
+import java.util.function.Consumer;
|
|
import java.util.stream.Stream;
|
|
import java.util.stream.Stream;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -200,25 +202,31 @@ public class MybatisPlusAutoConfiguration implements InitializingBean {
|
|
// TODO 此处必为非 NULL
|
|
// TODO 此处必为非 NULL
|
|
GlobalConfig globalConfig = this.properties.getGlobalConfig();
|
|
GlobalConfig globalConfig = this.properties.getGlobalConfig();
|
|
// TODO 注入填充器
|
|
// TODO 注入填充器
|
|
- if (this.applicationContext.getBeanNamesForType(MetaObjectHandler.class, false, false).length > 0) {
|
|
|
|
- MetaObjectHandler metaObjectHandler = this.applicationContext.getBean(MetaObjectHandler.class);
|
|
|
|
- globalConfig.setMetaObjectHandler(metaObjectHandler);
|
|
|
|
- }
|
|
|
|
|
|
+ this.getBeanThen(MetaObjectHandler.class, globalConfig::setMetaObjectHandler);
|
|
// TODO 注入主键生成器
|
|
// TODO 注入主键生成器
|
|
- if (this.applicationContext.getBeanNamesForType(IKeyGenerator.class, false, false).length > 0) {
|
|
|
|
- IKeyGenerator keyGenerator = this.applicationContext.getBean(IKeyGenerator.class);
|
|
|
|
- globalConfig.getDbConfig().setKeyGenerator(keyGenerator);
|
|
|
|
- }
|
|
|
|
|
|
+ this.getBeanThen(IKeyGenerator.class, i -> globalConfig.getDbConfig().setKeyGenerator(i));
|
|
// TODO 注入sql注入器
|
|
// TODO 注入sql注入器
|
|
- if (this.applicationContext.getBeanNamesForType(ISqlInjector.class, false, false).length > 0) {
|
|
|
|
- ISqlInjector iSqlInjector = this.applicationContext.getBean(ISqlInjector.class);
|
|
|
|
- globalConfig.setSqlInjector(iSqlInjector);
|
|
|
|
- }
|
|
|
|
|
|
+ this.getBeanThen(ISqlInjector.class, globalConfig::setSqlInjector);
|
|
|
|
+ // TODO 注入ID生成器
|
|
|
|
+ this.getBeanThen(IdentifierGenerator.class, globalConfig::setIdentifierGenerator);
|
|
// TODO 设置 GlobalConfig 到 MybatisSqlSessionFactoryBean
|
|
// TODO 设置 GlobalConfig 到 MybatisSqlSessionFactoryBean
|
|
factory.setGlobalConfig(globalConfig);
|
|
factory.setGlobalConfig(globalConfig);
|
|
return factory.getObject();
|
|
return factory.getObject();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 检查spring容器里是否有对应的bean,有则进行消费
|
|
|
|
+ *
|
|
|
|
+ * @param clazz class
|
|
|
|
+ * @param consumer 消费
|
|
|
|
+ * @param <T> 泛型
|
|
|
|
+ */
|
|
|
|
+ private <T> void getBeanThen(Class<T> clazz, Consumer<T> consumer) {
|
|
|
|
+ if (this.applicationContext.getBeanNamesForType(ISqlInjector.class, false, false).length > 0) {
|
|
|
|
+ consumer.accept(this.applicationContext.getBean(clazz));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
// TODO 入参使用 MybatisSqlSessionFactoryBean
|
|
// TODO 入参使用 MybatisSqlSessionFactoryBean
|
|
private void applyConfiguration(MybatisSqlSessionFactoryBean factory) {
|
|
private void applyConfiguration(MybatisSqlSessionFactoryBean factory) {
|
|
// TODO 使用 MybatisConfiguration
|
|
// TODO 使用 MybatisConfiguration
|