码迷,mamicode.com
首页 > 编程语言 > 详细

MyBatis整合Spring的实现(18)

时间:2015-10-30 12:49:44      阅读:308      评论:0      收藏:0      [点我收藏+]

标签:

例子

同一个命名空间,但是有2个配置文件,A配置文件依赖于B配置文件信息,但是在加载时,先加载B配置文件的话,那么就会报错,前面章节已经捕获了此异常并把相应的配置添加到Configuration(全局配置类)中,这里就是在加载A配置文件后,再次加载B配置文件,也就把B配置信息添加到Configuration(全局配置类)里,下面就来看一下代码吧

1 方法parsePendingResultMaps

private void parsePendingResultMaps() {
    Collection<ResultMapResolver> incompleteResultMaps = configuration.getIncompleteResultMaps();
    synchronized (incompleteResultMaps) {
      Iterator<ResultMapResolver> iter = incompleteResultMaps.iterator();
      while (iter.hasNext()) {
        try {
          iter.next().resolve();
          iter.remove();
        } catch (IncompleteElementException e) {
          // ResultMap is still missing a resource...
        }
      }
    }
}

2 方法parsePendingChacheRefs

private void parsePendingChacheRefs() {
  Collection<CacheRefResolver> incompleteCacheRefs = configuration.getIncompleteCacheRefs();
  synchronized (incompleteCacheRefs) {
      Iterator<CacheRefResolver> iter = incompleteCacheRefs.iterator();
      while (iter.hasNext()) {
          try {
              iter.next().resolveCacheRef();
              iter.remove();
          } catch (IncompleteElementException e) {
              // Cache ref is still missing a resource...
          }
      }
  }
}

3 方法parsePendingStatements

private void parsePendingStatements() {
  Collection<XMLStatementBuilder> incompleteStatements = configuration.getIncompleteStatements();
  synchronized (incompleteStatements) {
      Iterator<XMLStatementBuilder> iter = incompleteStatements.iterator();
      while (iter.hasNext()) {
          try {
              iter.next().parseStatementNode();
              iter.remove();
          } catch (IncompleteElementException e) {
              // Statement is still missing a resource...
          }
      }
  }
}

以上3个方法就是因为加载顺序错误的重复处理逻辑,加载的代码与前面一样,这里不再分析。

总结

以上文章就是MyBatis对配置文件的初始化,这里至少分析了60%,对理解MyBatis已经够了。MyBatis也就剩最后一步了,建立SqlSessionFactory工厂,这个工厂也是唯一的,MyBatis默认使用的是org.apache.ibatis.session.defaults.DefaultSqlSessionFactory类。这里以后在分析。

MyBatis整合Spring的实现(18)

标签:

原文地址:http://my.oschina.net/u/1269959/blog/523880

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!