/** * Copyright (c) 2011-2014, hubin (jobob@qq.com). * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.baomidou.mybatisplus.entity; import com.baomidou.mybatisplus.enums.DBType; import com.baomidou.mybatisplus.enums.FieldStrategy; import com.baomidou.mybatisplus.enums.IdType; import com.baomidou.mybatisplus.exceptions.MybatisPlusException; import com.baomidou.mybatisplus.mapper.AutoSqlInjector; import com.baomidou.mybatisplus.mapper.IMetaObjectHandler; import com.baomidou.mybatisplus.mapper.ISqlInjector; import com.baomidou.mybatisplus.toolkit.JdbcUtils; import com.baomidou.mybatisplus.toolkit.TableInfoHelper; import org.apache.ibatis.logging.Log; import org.apache.ibatis.logging.LogFactory; import org.apache.ibatis.session.Configuration; import org.apache.ibatis.session.SqlSessionFactory; import java.io.Serializable; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentSkipListSet; /** *
* Mybatis全局缓存 *
* * @author Caratacus * @Date 2016-12-06 */ @SuppressWarnings("serial") public class GlobalConfiguration implements Cloneable, Serializable { // 日志 private static final Log logger = LogFactory.getLog(GlobalConfiguration.class); /** * 缓存全局信息 */ private static final Map* 设置全局设置(以configuration地址值作为Key) *
* * @param configuration * @param mybatisGlobalConfig * @return */ public static void setGlobalConfig(Configuration configuration, GlobalConfiguration mybatisGlobalConfig) { if (configuration == null || mybatisGlobalConfig == null) { new MybatisPlusException("Error: Could not setGlobalConfig"); } // 设置全局设置 GLOBAL_CONFIG.put(configuration.toString(), mybatisGlobalConfig); } /** ** 设置全局设置 (统一所有入口) *
* * @param configuration * @return */ public void setGlobalConfig(Configuration configuration) { setGlobalConfig(configuration, this); } /** * 获取MybatisGlobalConfig (统一所有入口) * * @param configuration * @return */ public static GlobalConfiguration GlobalConfig(Configuration configuration) { if (configuration == null) { throw new MybatisPlusException("Error: You need Initialize MybatisConfiguration !"); } return GlobalConfig(configuration.toString()); } /** * 获取MybatisGlobalConfig (统一所有入口) * * @param configMark * @return */ public static GlobalConfiguration GlobalConfig(String configMark) { GlobalConfiguration cache = GLOBAL_CONFIG.get(configMark); if (cache == null) { // 没有获取全局配置初始全局配置 logger.warn("Warn: Not getting global configuration ! global configuration Initializing !"); GLOBAL_CONFIG.put(configMark, DEFAULT); return DEFAULT; } return cache; } public static DBType getDbType(Configuration configuration) { return GlobalConfig(configuration).getDbType(); } public static IdType getIdType(Configuration configuration) { return GlobalConfig(configuration).getIdType(); } public static boolean isDbColumnUnderline(Configuration configuration) { return GlobalConfig(configuration).isDbColumnUnderline(); } public static ISqlInjector getSqlInjector(Configuration configuration) { return GlobalConfig(configuration).getSqlInjector(); } public static IMetaObjectHandler getMetaObjectHandler(Configuration configuration) { return GlobalConfig(configuration).getMetaObjectHandler(); } public static FieldStrategy getFieldStrategy(Configuration configuration) { return GlobalConfig(configuration).getFieldStrategy(); } public static boolean isRefresh(Configuration configuration) { return GlobalConfig(configuration).isRefresh(); } public static boolean isAutoSetDbType(Configuration configuration) { return GlobalConfig(configuration).isAutoSetDbType(); } public static Set