MyBatis 源码分析 - 映射文件解析过程

1.简介 在上一篇文章中,我详细分析了 MyBatis 配置文件的解析过程。由于上一篇文章的篇幅比较大,加之映射文件解析过程也比较复杂的原因。所以我将映射文件解析过程的分析内容从上一篇文章中抽取出来,独立成文,于是就有了本篇文章。在本篇文章中,我将分析映射文件中出现的一些及节点,比如 , 等。下面我们来看一个映射文件配置示例。 author 上面是一个比较简单的映射文件,还有一些的节点没有出现在上面。以上每种配置中的每种节点的解析逻辑都封装在了相应的方法中,这些方法由 XMLMapperBuilder 类的 configurationElement 方法统一调用。该方法的逻辑如下: private void configurationElement(XNode context) { try { // 获取 mapper 命名空间 String namespace = context.getStringAttribute("namespace"); if (namespace == null || namespace.equals("")) { throw new BuilderException("Mapper's namespace cannot be empty"); } // 设置命名空间到 builderAssistant 中 builderAssistant.setCurrentNamespace(namespace); // 解析 节点 cacheRefElement(context.evalNode("cache-ref")); // 解析 节点 cacheElement(context.evalNode("cache")); // 已废弃配置,这里不做分析 parameterMapElement(context.evalNodes("/mapper/parameterMap")); // 解析 节点 resultMapElements(context.evalNodes("/mapper/resultMap")); // 解析 节点 sqlElement(context.evalNodes("/mapper/sql")); // 解析