这里我们重点剖析MybatisConfiguration类,在MybatisConfiguration中,MP初始化了其自身的MybatisMapperRegistry,而MybatisMapperRegistry是MP加载自定义的SQL方法的注册器。
MybatisConfiguration中很多方法是使用MybatisMapperRegistry进行重写实现
其中有3个重载方法addMapper实现了注册MP动态脚本的功能。
public class MybatisConfiguration extends Configuration {
/**
* Mapper 注册
*/
protected final MybatisMapperRegistry mybatisMapperRegistry = new MybatisMapperRegistry(this);
// …
/**
* 初始化调用
*/
public MybatisConfiguration() {
super();
this.mapUnderscoreToCamelCase = true;
languageRegistry.setDefaultDriverClass(MybatisXMLLanguageDriver.class);
}
/**
- MybatisPlus 加载 SQL 顺序:
*
1、加载 XML中的 SQL
*
2、加载 SqlProvider 中的 SQL
*
3、XmlSql 与 SqlProvider不能包含相同的 SQL
*
调整后的 SQL优先级:XmlSql > sqlProvider > CurdSql
*/
@Override
public void addMappedStatement(MappedStatement ms) {
// …
}
// … 省略若干行
/**
* 使用自己的 MybatisMapperRegistry
*/
@Override
public void addMapper(Class type) {
mybatisMapperRegistry.add