Bladeren bron

优化配置初始化

jobob 8 jaren geleden
bovenliggende
commit
d1fa3a0b04

+ 8 - 28
mybatis-plus/src/main/java/com/baomidou/mybatisplus/MybatisSessionFactoryBuilder.java

@@ -15,17 +15,15 @@
  */
 package com.baomidou.mybatisplus;
 
-import com.baomidou.mybatisplus.entity.GlobalConfiguration;
-import com.baomidou.mybatisplus.toolkit.IOUtils;
-import org.apache.ibatis.exceptions.ExceptionFactory;
-import org.apache.ibatis.executor.ErrorContext;
-import org.apache.ibatis.session.SqlSessionFactory;
-import org.apache.ibatis.session.SqlSessionFactoryBuilder;
-
 import java.io.InputStream;
 import java.io.Reader;
 import java.util.Properties;
 
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.apache.ibatis.session.SqlSessionFactoryBuilder;
+
+import com.baomidou.mybatisplus.entity.GlobalConfiguration;
+
 /**
  * <p>
  * replace default SqlSessionFactoryBuilder class
@@ -40,33 +38,15 @@ public class MybatisSessionFactoryBuilder extends SqlSessionFactoryBuilder {
 
 	@Override
 	public SqlSessionFactory build(Reader reader, String environment, Properties properties) {
-		try {
-			MybatisXMLConfigBuilder parser = new MybatisXMLConfigBuilder(reader, environment, properties);
-			globalConfig.setGlobalConfig(parser.getConfiguration());
-			return build(parser.parse());
-		} catch (Exception e) {
-			throw ExceptionFactory.wrapException("Error building SqlSession.", e);
-		} finally {
-			ErrorContext.instance().reset();
-			IOUtils.closeQuietly(reader);
-		}
+		return globalConfig.signGlobalConfig(super.build(reader, environment, properties));
 	}
 
 	@Override
 	public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) {
-		try {
-			MybatisXMLConfigBuilder parser = new MybatisXMLConfigBuilder(inputStream, environment, properties);
-			globalConfig.setGlobalConfig(parser.getConfiguration());
-			return build(parser.parse());
-		} catch (Exception e) {
-			throw ExceptionFactory.wrapException("Error building SqlSession.", e);
-		} finally {
-			ErrorContext.instance().reset();
-			IOUtils.closeQuietly(inputStream);
-		}
+		return globalConfig.signGlobalConfig(super.build(inputStream, environment, properties));
 	}
 
-	//TODO 注入全局配置
+	// TODO 注入全局配置
 	public void setGlobalConfig(GlobalConfiguration globalConfig) {
 		this.globalConfig = globalConfig;
 	}

+ 7 - 4
mybatis-plus/src/main/java/com/baomidou/mybatisplus/entity/GlobalConfiguration.java

@@ -254,14 +254,17 @@ public class GlobalConfiguration implements Cloneable, Serializable {
 
 	/**
 	 * <p>
-	 * 设置全局设置 (统一所有入口)
-	 * <p/>
+	 * 标记全局设置 (统一所有入口)
+	 * </p>
 	 *
 	 * @param configuration
 	 * @return
 	 */
-	public void setGlobalConfig(Configuration configuration) {
-		setGlobalConfig(configuration, this);
+	public SqlSessionFactory signGlobalConfig(SqlSessionFactory sqlSessionFactory) {
+		if (null != sqlSessionFactory) {
+			setGlobalConfig(sqlSessionFactory.getConfiguration(), this);
+		}
+		return sqlSessionFactory;
 	}
 
 	/**

+ 2 - 5
mybatis-plus/src/main/java/com/baomidou/mybatisplus/spring/MybatisSqlSessionFactoryBean.java

@@ -556,15 +556,11 @@ public class MybatisSqlSessionFactoryBean implements FactoryBean<SqlSessionFacto
 		SqlRunner.FACTORY = sqlSessionFactory;
 		// TODO 缓存 sqlSessionFactory
 		globalConfig.setSqlSessionFactory(sqlSessionFactory);
-		// TODO 设置全局参数属性
-		globalConfig.setGlobalConfig(configuration);
-
 		if (!isEmpty(this.mapperLocations)) {
 			for (Resource mapperLocation : this.mapperLocations) {
 				if (mapperLocation == null) {
 					continue;
 				}
-
 				try {
 					// TODO
 					MybatisXMLMapperBuilder xmlMapperBuilder = new MybatisXMLMapperBuilder(mapperLocation.getInputStream(),
@@ -585,7 +581,8 @@ public class MybatisSqlSessionFactoryBean implements FactoryBean<SqlSessionFacto
 				LOGGER.debug("Property 'mapperLocations' was not specified or no matching resources found");
 			}
 		}
-		return sqlSessionFactory;
+		// TODO 设置全局参数属性
+		return globalConfig.signGlobalConfig(sqlSessionFactory);
 	}
 
 	/**