|
@@ -15,18 +15,10 @@
|
|
*/
|
|
*/
|
|
package com.baomidou.mybatisplus.entity;
|
|
package com.baomidou.mybatisplus.entity;
|
|
|
|
|
|
-import java.sql.Connection;
|
|
|
|
-import java.sql.SQLException;
|
|
|
|
-import java.util.Map;
|
|
|
|
|
|
+import java.io.Serializable;
|
|
import java.util.Set;
|
|
import java.util.Set;
|
|
-import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
import java.util.concurrent.ConcurrentSkipListSet;
|
|
import java.util.concurrent.ConcurrentSkipListSet;
|
|
|
|
|
|
-import javax.sql.DataSource;
|
|
|
|
-
|
|
|
|
-import org.apache.ibatis.logging.Log;
|
|
|
|
-import org.apache.ibatis.logging.LogFactory;
|
|
|
|
-import org.apache.ibatis.session.Configuration;
|
|
|
|
import org.apache.ibatis.session.SqlSession;
|
|
import org.apache.ibatis.session.SqlSession;
|
|
import org.apache.ibatis.session.SqlSessionFactory;
|
|
import org.apache.ibatis.session.SqlSessionFactory;
|
|
|
|
|
|
@@ -34,16 +26,13 @@ import com.baomidou.mybatisplus.MybatisSqlSessionTemplate;
|
|
import com.baomidou.mybatisplus.enums.DBType;
|
|
import com.baomidou.mybatisplus.enums.DBType;
|
|
import com.baomidou.mybatisplus.enums.FieldStrategy;
|
|
import com.baomidou.mybatisplus.enums.FieldStrategy;
|
|
import com.baomidou.mybatisplus.enums.IdType;
|
|
import com.baomidou.mybatisplus.enums.IdType;
|
|
-import com.baomidou.mybatisplus.exceptions.MybatisPlusException;
|
|
|
|
import com.baomidou.mybatisplus.incrementer.IKeyGenerator;
|
|
import com.baomidou.mybatisplus.incrementer.IKeyGenerator;
|
|
-import com.baomidou.mybatisplus.mapper.AutoSqlInjector;
|
|
|
|
import com.baomidou.mybatisplus.mapper.ISqlInjector;
|
|
import com.baomidou.mybatisplus.mapper.ISqlInjector;
|
|
import com.baomidou.mybatisplus.mapper.MetaObjectHandler;
|
|
import com.baomidou.mybatisplus.mapper.MetaObjectHandler;
|
|
-import com.baomidou.mybatisplus.toolkit.IOUtils;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.toolkit.GlobalConfigUtils;
|
|
import com.baomidou.mybatisplus.toolkit.JdbcUtils;
|
|
import com.baomidou.mybatisplus.toolkit.JdbcUtils;
|
|
import com.baomidou.mybatisplus.toolkit.SqlReservedWords;
|
|
import com.baomidou.mybatisplus.toolkit.SqlReservedWords;
|
|
import com.baomidou.mybatisplus.toolkit.StringUtils;
|
|
import com.baomidou.mybatisplus.toolkit.StringUtils;
|
|
-import com.baomidou.mybatisplus.toolkit.TableInfoHelper;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
* <p>
|
|
* <p>
|
|
@@ -53,18 +42,8 @@ import com.baomidou.mybatisplus.toolkit.TableInfoHelper;
|
|
* @author Caratacus
|
|
* @author Caratacus
|
|
* @since 2016-12-06
|
|
* @since 2016-12-06
|
|
*/
|
|
*/
|
|
-public class GlobalConfiguration implements Cloneable {
|
|
|
|
|
|
+public class GlobalConfiguration implements Serializable {
|
|
|
|
|
|
- /**
|
|
|
|
- * 默认参数
|
|
|
|
- */
|
|
|
|
- public static final GlobalConfiguration DEFAULT = new GlobalConfiguration();
|
|
|
|
- // 日志
|
|
|
|
- private static final Log logger = LogFactory.getLog(GlobalConfiguration.class);
|
|
|
|
- /**
|
|
|
|
- * 缓存全局信息
|
|
|
|
- */
|
|
|
|
- private static final Map<String, GlobalConfiguration> GLOBAL_CONFIG = new ConcurrentHashMap<>();
|
|
|
|
// 逻辑删除全局值
|
|
// 逻辑删除全局值
|
|
private String logicDeleteValue = null;
|
|
private String logicDeleteValue = null;
|
|
// 逻辑未删除全局值
|
|
// 逻辑未删除全局值
|
|
@@ -106,106 +85,6 @@ public class GlobalConfiguration implements Cloneable {
|
|
this.sqlInjector = sqlInjector;
|
|
this.sqlInjector = sqlInjector;
|
|
}
|
|
}
|
|
|
|
|
|
- /**
|
|
|
|
- * 获取当前的SqlSessionFactory
|
|
|
|
- *
|
|
|
|
- * @param clazz
|
|
|
|
- * @return
|
|
|
|
- */
|
|
|
|
- public static SqlSessionFactory currentSessionFactory(Class<?> clazz) {
|
|
|
|
- String configMark = TableInfoHelper.getTableInfo(clazz).getConfigMark();
|
|
|
|
- GlobalConfiguration mybatisGlobalConfig = GlobalConfiguration.getGlobalConfig(configMark);
|
|
|
|
- return mybatisGlobalConfig.getSqlSessionFactory();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 获取默认MybatisGlobalConfig
|
|
|
|
- *
|
|
|
|
- * @return
|
|
|
|
- */
|
|
|
|
- public static GlobalConfiguration defaults() {
|
|
|
|
- try {
|
|
|
|
- GlobalConfiguration clone = DEFAULT.clone();
|
|
|
|
- clone.setSqlInjector(new AutoSqlInjector());
|
|
|
|
- return clone;
|
|
|
|
- } catch (CloneNotSupportedException e) {
|
|
|
|
- throw new MybatisPlusException("ERROR: CLONE MybatisGlobalConfig DEFAULT FAIL ! Cause:" + e);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * <p>
|
|
|
|
- * 设置全局设置(以configuration地址值作为Key)
|
|
|
|
- * <p/>
|
|
|
|
- *
|
|
|
|
- * @param configuration
|
|
|
|
- * @param mybatisGlobalConfig
|
|
|
|
- * @return
|
|
|
|
- */
|
|
|
|
- public static void setGlobalConfig(Configuration configuration, GlobalConfiguration mybatisGlobalConfig) {
|
|
|
|
- if (configuration == null || mybatisGlobalConfig == null) {
|
|
|
|
- throw new MybatisPlusException("Error: Could not setGlobalConfig");
|
|
|
|
- }
|
|
|
|
- // 设置全局设置
|
|
|
|
- GLOBAL_CONFIG.put(configuration.toString(), mybatisGlobalConfig);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 获取MybatisGlobalConfig (统一所有入口)
|
|
|
|
- *
|
|
|
|
- * @param configuration
|
|
|
|
- * @return
|
|
|
|
- */
|
|
|
|
- public static GlobalConfiguration getGlobalConfig(Configuration configuration) {
|
|
|
|
- if (configuration == null) {
|
|
|
|
- throw new MybatisPlusException("Error: You need Initialize MybatisConfiguration !");
|
|
|
|
- }
|
|
|
|
- return getGlobalConfig(configuration.toString());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 获取MybatisGlobalConfig (统一所有入口)
|
|
|
|
- *
|
|
|
|
- * @param configMark
|
|
|
|
- * @return
|
|
|
|
- */
|
|
|
|
- public static GlobalConfiguration getGlobalConfig(String configMark) {
|
|
|
|
- GlobalConfiguration cache = GLOBAL_CONFIG.get(configMark);
|
|
|
|
- if (cache == null) {
|
|
|
|
- // 没有获取全局配置初始全局配置
|
|
|
|
- logger.debug("DeBug: MyBatis Plus Global configuration Initializing !");
|
|
|
|
- GLOBAL_CONFIG.put(configMark, DEFAULT);
|
|
|
|
- return DEFAULT;
|
|
|
|
- }
|
|
|
|
- return cache;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public static DBType getDbType(Configuration configuration) {
|
|
|
|
- return getGlobalConfig(configuration).getDbType();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public static IKeyGenerator getKeyGenerator(Configuration configuration) {
|
|
|
|
- return getGlobalConfig(configuration).getKeyGenerator();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public static IdType getIdType(Configuration configuration) {
|
|
|
|
- return getGlobalConfig(configuration).getIdType();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public static boolean isDbColumnUnderline(Configuration configuration) {
|
|
|
|
- return getGlobalConfig(configuration).isDbColumnUnderline();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public static ISqlInjector getSqlInjector(Configuration configuration) {
|
|
|
|
- // fix #140
|
|
|
|
- GlobalConfiguration globalConfiguration = getGlobalConfig(configuration);
|
|
|
|
- ISqlInjector sqlInjector = globalConfiguration.getSqlInjector();
|
|
|
|
- if (sqlInjector == null) {
|
|
|
|
- sqlInjector = new AutoSqlInjector();
|
|
|
|
- globalConfiguration.setSqlInjector(sqlInjector);
|
|
|
|
- }
|
|
|
|
- return sqlInjector;
|
|
|
|
- }
|
|
|
|
|
|
|
|
public IKeyGenerator getKeyGenerator() {
|
|
public IKeyGenerator getKeyGenerator() {
|
|
return keyGenerator;
|
|
return keyGenerator;
|
|
@@ -215,57 +94,6 @@ public class GlobalConfiguration implements Cloneable {
|
|
this.keyGenerator = keyGenerator;
|
|
this.keyGenerator = keyGenerator;
|
|
}
|
|
}
|
|
|
|
|
|
- public static MetaObjectHandler getMetaObjectHandler(Configuration configuration) {
|
|
|
|
- return getGlobalConfig(configuration).getMetaObjectHandler();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public static FieldStrategy getFieldStrategy(Configuration configuration) {
|
|
|
|
- return getGlobalConfig(configuration).getFieldStrategy();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public static boolean isRefresh(Configuration configuration) {
|
|
|
|
- return getGlobalConfig(configuration).isRefresh();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public static boolean isAutoSetDbType(Configuration configuration) {
|
|
|
|
- return getGlobalConfig(configuration).isAutoSetDbType();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public static Set<String> getMapperRegistryCache(Configuration configuration) {
|
|
|
|
- return getGlobalConfig(configuration).getMapperRegistryCache();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public static String getIdentifierQuote(Configuration configuration) {
|
|
|
|
- return getGlobalConfig(configuration).getIdentifierQuote();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public static SqlSession getSqlSession(Configuration configuration) {
|
|
|
|
- return getGlobalConfig(configuration).getSqlSession();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * 设置元数据相关属性
|
|
|
|
- *
|
|
|
|
- * @param dataSource
|
|
|
|
- * @param globalConfig
|
|
|
|
- */
|
|
|
|
- public static void setMetaData(DataSource dataSource, GlobalConfiguration globalConfig) {
|
|
|
|
- Connection connection = null;
|
|
|
|
- try {
|
|
|
|
- connection = dataSource.getConnection();
|
|
|
|
- String jdbcUrl = connection.getMetaData().getURL();
|
|
|
|
- // 设置全局关键字
|
|
|
|
- globalConfig.setSqlKeywords(connection.getMetaData().getSQLKeywords());
|
|
|
|
- // 自动设置数据库类型
|
|
|
|
- if (globalConfig.isAutoSetDbType()) {
|
|
|
|
- globalConfig.setDbTypeByJdbcUrl(jdbcUrl);
|
|
|
|
- }
|
|
|
|
- } catch (SQLException e) {
|
|
|
|
- logger.warn("Warn: GlobalConfiguration setMetaData Fail ! Cause:" + e);
|
|
|
|
- } finally {
|
|
|
|
- IOUtils.closeQuietly(connection);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
|
|
public String getLogicDeleteValue() {
|
|
public String getLogicDeleteValue() {
|
|
return logicDeleteValue;
|
|
return logicDeleteValue;
|
|
@@ -398,10 +226,6 @@ public class GlobalConfiguration implements Cloneable {
|
|
return sqlSession;
|
|
return sqlSession;
|
|
}
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
|
- protected GlobalConfiguration clone() throws CloneNotSupportedException {
|
|
|
|
- return (GlobalConfiguration) super.clone();
|
|
|
|
- }
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
* <p>
|
|
* <p>
|
|
@@ -413,7 +237,7 @@ public class GlobalConfiguration implements Cloneable {
|
|
*/
|
|
*/
|
|
public SqlSessionFactory signGlobalConfig(SqlSessionFactory sqlSessionFactory) {
|
|
public SqlSessionFactory signGlobalConfig(SqlSessionFactory sqlSessionFactory) {
|
|
if (null != sqlSessionFactory) {
|
|
if (null != sqlSessionFactory) {
|
|
- setGlobalConfig(sqlSessionFactory.getConfiguration(), this);
|
|
|
|
|
|
+ GlobalConfigUtils.setGlobalConfig(sqlSessionFactory.getConfiguration(), this);
|
|
}
|
|
}
|
|
return sqlSessionFactory;
|
|
return sqlSessionFactory;
|
|
}
|
|
}
|