亲宝软件园·资讯

展开

Java  Mapper.xml映射文件

周杰伦本人​​​​​​​ 人气:0

前言:

解析完全局配置文件后接下来就是解析Mapper文件了,它是通过XMLMapperBuilder来进行解析的

解析Mapper文件入口

XMLMapperBuilder的parse()方法:

public void parse() {
    if (!configuration.isResourceLoaded(resource)) {
      configurationElement(parser.evalNode("/mapper"));
      configuration.addLoadedResource(resource);
      bindMapperForNamespace();
    }

    parsePendingResultMaps();
    parsePendingCacheRefs();
    parsePendingStatements();
  }

重点看一下XMLMapperBuilder类的configurationElement()方法

解析Mapper文件

MLMapperBuilder类的configurationElement()方法:

private void configurationElement(XNode context) {
    try {
      String namespace = context.getStringAttribute("namespace");
      if (namespace == null || namespace.isEmpty()) {
        throw new BuilderException("Mapper's namespace cannot be empty");
      }
      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"));
      buildStatementFromContext(context.evalNodes("select|insert|update|delete"));
    } catch (Exception e) {
      throw new BuilderException("Error parsing Mapper XML. The XML location is '" + resource + "'. Cause: " + e, e);
    }
  }

总结

文章主要讲了Mapper映射文件的解析,包括namespace、cache、resultMap、sql等标签,最终这些信息都会保存到Configuration中,理解Mapper的映射逻辑还是非常重要的,因为我们开发的时候主要就是编写Mapper文件。

加载全部内容

相关教程
猜你喜欢
用户评论