MybatisConfiguration.java 3.31 KB
   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
/**
* Copyright (c) 2011-2020, 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;

import org.apache.ibatis.binding.MapperRegistry;
import org.apache.ibatis.logging.Log;
import org.apache.ibatis.logging.LogFactory;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;

import com.baomidou.mybatisplus.entity.GlobalConfiguration;

/**
* <p>
* replace default Configuration class
* </p>
* <p>
* Caratacus 2016/9/25 replace mapperRegistry
* </p>
*
* @author hubin
* @Date 2016-01-23
*/
public class MybatisConfiguration extends Configuration {

private static final Log logger = LogFactory.getLog(MybatisConfiguration.class);

/*
* Mapper 注册
*/
public final MybatisMapperRegistry mybatisMapperRegistry = new MybatisMapperRegistry(this);

/**
* 初始化调用
*/
public MybatisConfiguration() {
System.err.println("mybatis-plus init success.");
}

/**
* <p>
* MybatisPlus 加载 SQL 顺序:
* </p>
* 1、加载XML中的SQL<br>
* 2、加载sqlProvider中的SQL<br>
* 3、xmlSql 与 sqlProvider不能包含相同的SQL<br>
* <br>
* 调整后的SQL优先级:xmlSql > sqlProvider > curdSql <br>
*/
@Override
public void addMappedStatement(MappedStatement ms) {
logger.debug(" addMappedStatement: " + ms.getId());
if (GlobalConfiguration.GlobalConfig(ms.getConfiguration()).isRefresh()) {
/*
* 支持是否自动刷新 XML 变更内容,开发环境使用【 注:生产环境勿用!】
*/
this.mappedStatements.remove(ms.getId());
} else {
if (this.mappedStatements.containsKey(ms.getId())) {
/*
* 说明已加载了xml中的节点; 忽略mapper中的SqlProvider数据
*/
logger.error("mapper[" + ms.getId() + "] is ignored, because it's exists, maybe from xml file");
return;
}
}
super.addMappedStatement(ms);
}

@Override
public void setDefaultScriptingLanguage(Class<?> driver) {
if (driver == null) {
/* 设置自定义 driver */
driver = MybatisXMLLanguageDriver.class;
}
super.setDefaultScriptingLanguage(driver);
}

@Override
public MapperRegistry getMapperRegistry() {
return mybatisMapperRegistry;
}

@Override
public <T> void addMapper(Class<T> type) {
mybatisMapperRegistry.addMapper(type);
}

@Override
public void addMappers(String packageName, Class<?> superType) {
mybatisMapperRegistry.addMappers(packageName, superType);
}

@Override
public void addMappers(String packageName) {
mybatisMapperRegistry.addMappers(packageName);
}

@Override
public <T> T getMapper(Class<T> type, SqlSession sqlSession) {
return mybatisMapperRegistry.getMapper(type, sqlSession);
}

@Override
public boolean hasMapper(Class<?> type) {
return mybatisMapperRegistry.hasMapper(type);
}

}