2019独角兽企业重金招聘Python工程师标准>>>

终于要讲到mapper的解析了,这个地方是最重要的地方,日常大部分程序员的时间就在这里。

---

stop in org.apache.ibatis.builder.xml.XMLConfigBuilder.mapperElement
private void mapperElement(XNode parent) throws Exception {// 看到这里了if (parent != null) {// 开始遍历每1个节点for (XNode child : parent.getChildren()) {// 如果是package命名if ("package".equals(child.getName())) {String mapperPackage = child.getStringAttribute("name");configuration.addMappers(mapperPackage);} else {// 一般从这里开始执行// 获取resource的属性值String resource = child.getStringAttribute("resource");// 获取url的属性值String url = child.getStringAttribute("url");// 获取class的属性值String mapperClass = child.getStringAttribute("class");// 如果是指定了resource,其它都没有指定,就走这个分支if (resource != null && url == null && mapperClass == null) {// 看到这里了// 将文件路径保存到上下文中,ThreadLocal型ErrorContext.instance().resource(resource);// 读取文件流InputStream inputStream = Resources.getResourceAsStream(resource);//XMLMapperBuilder mapperParser = new XMLMapperBuilder(inputStream, configuration, resource,configuration.getSqlFragments());mapperParser.parse();} else if (resource == null && url != null && mapperClass == null) {ErrorContext.instance().resource(url);InputStream inputStream = Resources.getUrlAsStream(url);XMLMapperBuilder mapperParser = new XMLMapperBuilder(inputStream, configuration, url,configuration.getSqlFragments());mapperParser.parse();} else if (resource == null && url == null && mapperClass != null) {Class<?> mapperInterface = Resources.classForName(mapperClass);configuration.addMapper(mapperInterface);} else {throw new BuilderException("A mapper element may only specify a url, resource or class, but not more than one.");}}}}}
org.apache.ibatis.builder.xml.XMLMapperBuilder.parse

进入parse函数后,先解决

parameterMapElement(context.evalNodes("/mapper/parameterMap"));
stop in org.apache.ibatis.builder.xml.XMLMapperBuilder.parameterMapElement

看到一半,朋友说这个parameterMap很少用,所以不需要看了。

转载于:https://my.oschina.net/qiangzigege/blog/871933

MyBatis-3.4.2-源码分析12:XML解析之mapperElement(root.evalNode(mappers))相关推荐

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

    1.简介 在上一篇文章中,我详细分析了 MyBatis 配置文件的解析过程.由于上一篇文章的篇幅比较大,加之映射文件解析过程也比较复杂的原因.所以我将映射文件解析过程的分析内容从上一篇文章中抽取出来, ...

  2. mybatis高级操作及源码分析(一)

    Mybatis中使用注解 or xml 文件? 注解使用姿势 下面以Select注解为例. @Select 的本质还是 xml 文件的形式,有两种方式@Select注解和@SelectProvider ...

  3. mybatis的使用及源码分析(八) mybatis的rowbounds分析

    Mybatis提供了一个简单的逻辑分页类RowBounds,其原理类似于在内存中做了一个分页,不是数据库层面的分页,性能不算好,谨慎使用 一. RowBounds源码分析 1 RowBounds源码: ...

  4. jdk、spring、mybatis、线程的源码分析

    基础篇 从为什么String=String谈到StringBuilder和StringBuffer Java语法糖1:可变长度参数以及foreach循环原理 Java语法糖2:自动装箱和自动拆箱 集合 ...

  5. Hadoop源码分析(12)

    Hadoop源码分析(12) 1. journalnode客户端   在文档(11)中分析了初始化editlog的方法.在初始化之前其会根据集 群的配置状态选择不同的方式来进行初始化.在HA状态下,其 ...

  6. red5源码分析---12

    red5源码分析-服务器处理视频数据 接着<red5源码分析-11>,本章假设客户端发来的是视频数据,下面就分析服务器如何处理这些数据的. 根据前面几章的分析,基于mina框架,数据到达服 ...

  7. Nginx 源码分析-- 模块module 解析执行 nginx.conf 配置文件流程分析 一

    搭建nginx服务器时,主要的配置文件 nginx.conf 是部署和维护服务器人员经常要使用到的文件, 里面进行了许多服务器参数的设置.那么nginx 以模块 module为骨架的设计下是如何运用模 ...

  8. spring 源码分析(1)-xml文件解析

    我们在最开始接触spring的时候,看到不少书spring入门的例子如下 ApplicationContext atx = new ClassPathXmlApplicationContext(&qu ...

  9. Tomcat源码分析——server.xml文件的加载

    前言 作为Java程序员,对于tomcat的server.xml想必都不陌生.本文基于Tomcat7.0的Java源码,对server.xml文件是如何加载的进行分析. 源码分析 Bootstrap的 ...

  10. Tomcat7.0源码分析——server.xml文件的加载与解析

    前言 作为Java程序员,对于Tomcat的server.xml想必都不陌生.本文基于Tomcat7.0的Java源码,对server.xml文件是如何加载和解析进行分析. 加载过程分析 Bootst ...

最新文章

  1. 自然水体辐射特性与数值模拟 pdf_【技术·航天】定量评估贡献 精准决策未来 ——气象卫星数据在数值预报系统中贡献的定量评估...
  2. Orange——The Data
  3. Abp vnext Web应用程序开发教程 1 —— 创建服务器端
  4. 全世界云计算宕机和中断[2013年-2014年集锦]
  5. EMNLP2020文档级关系抽取模型GAIN 论文Double Graph Based Reasoning for Document-level Relation Extraction
  6. Expected object of backend CPU but got backend CUDA for argument #4 ‘mat1‘
  7. 嵌入式linux中文繁体字库,嵌入式Linux下中文字体显示
  8. “麒麟计划”落地苍南,赋能外贸企业数字化转型!
  9. matlab简易画爱心
  10. xm-select getValue()获取不到值的解决方法
  11. 框架篇—MVC、MVP、MVCS、MVVM、VIPER使用关系总结
  12. Win7安全模式启动卡在Classpnp.sys
  13. Android 关于Android权重的真正理解
  14. 一个员工的离职成本有多高,超出想象
  15. 为Debian解决Mercury MW150US无线网卡驱动
  16. 时间序列matlab的实现
  17. NANK南卡lite Pro无线蓝牙耳机上手体验
  18. surface pro java_平板界的楷模!Surface Pro 4简直无敌了
  19. java生成db文件
  20. 08.ESP8266驱动WS2812彩灯

热门文章

  1. 优化UITableViewCell高度计算的那些事
  2. jQuery 左侧滑动
  3. mfc遍历指定文件夹下的所有文件并排序
  4. 隐马尔科夫-维特比算法
  5. 实测!让M1芯片版mac也能写入NTFS格式磁盘,完整教程附上!
  6. Android中保存网络图片到SD卡
  7. 【Flutter】Dart中的继承
  8. Fl Studio真的不如Cubase或者Logic Pro等电音软件专业吗?
  9. mongodb启动很慢:[initandlisten] found 1 index(es) that
  10. SQL Server存储过程同时返回分页结果集和总数