(一)创建XMLMapperBuilder对象
文章二最后创建了一个XMLMapperBuilder对象。
XMLMapperBuilder其实和XmlConfigBuilder一样,里面内置了一个XPathParser,通过读取resource创建document属性。
因为XMLMapperBuilder和XmlConfigBuilder都是继承基类BaseBuilder,configuration是基类的属性,这里向configuration里添加属性,都是修改同一个configuration。
(二) XMLMapperBuilder对象parse方法
XMLMapperBuilder的parse方法,接着构造configuration。
public void parse() {
//如果configuration里的loadedResources(hashset)不包含某mapper-xml文件的路径,就要往里面添加
if (!configuration.isResourceLoaded(resource)) {
//从mapper标签开始读取
configurationElement(parser.evalNode("/mapper"));
//双重检查,是否加入了mapper-xml文件的路径
configuration.addLoadedResource(resource);
//将nameSpace的值加入loadedResources,将mapper类加入mapper注册中心
bindMapperForNamespace();
}
parsePendingResultMaps();
parsePendingCacheRefs();
parsePendingStatements();
}
1.configurationElement方法
private void configurationElement