springboot的MybatisAutoConfiguration自动配置类会创建SqlSessionFactory,创建过程就是填充configuration属性,调用buildSqlSessionFactory()方法完成SqlSessionFactory创建,这其中就会创建XMLMapperBuilder解析mapper.xml和XMLConfigBuilder解析mabatis-config.xml
1.关键方法parse
  public void parse() {
    if (!configuration.isResourceLoaded(resource)) {
      //处理<mapper >节点 也就是解析所有xml中的所有标签 例如select resultmap
      configurationElement(parser.evalNode("/mapper"));
      //将 resource 添加到 Configuration.loadedResources 集合 保存 它是 HashSet<String>
	  //类型的集合,其中记录了已经加载过的映射文件
      configuration.addLoadedResource(resource);
      //2.构建mapper与代理的关系
      bindMapperForNamespace();
    }
    parsePendingResultMaps();
    parsePendingCacheRefs();
    parsePendingStatements();
  }
parse方法是被循环调用的,也就是每个mapper.xml都会执行一次。
 configuration关键属性
 1.mapperRegistry
- bindMapperForNamespace()方法实现的,对接口的全限定名和代理类进行绑定
  
2.resultMaps
 就是xml中每个方法定义的resultMap或实体类型的resultType
 
 3.sqlFragments
 每个xml中定义的sql标签
 
 
 4.loadedResources
- configuration.addLoadedResource(resource)方法实现的
  
 这里有接口,接口的全限定名,对应的xml。
 5.mappedStatements
  
 这里对应每个< select >、< insert >、< update >、< delete >标签,sqlSource是标签中写的sql,以及对应的resultMap。



















