文档章节

MyBatis-3.4.2-源码分析14:XML解析之sqlElement(context.evalNodes("/mapper/sql"))

强子1985
 强子1985
发布于 2017/04/06 13:12
字数 170
阅读 14
收藏 1

这一节,主要是

sqlElement(context.evalNodes("/mapper/sql"))

源码如下:

private void sqlElement(List<XNode> list) throws Exception {
		//从这里开始看
		if (configuration.getDatabaseId() != null) {
			sqlElement(list, configuration.getDatabaseId());
		}
		sqlElement(list, null);
	}

断点位置在于

stop in org.apache.ibatis.session.Configuration.getDatabaseId

其中

sqlElement(list, configuration.getDatabaseId());

的解析过程如下:

private void sqlElement(List<XNode> list, String requiredDatabaseId) throws Exception {
		// 开始遍历每1个子节点
		for (XNode context : list) {
			// 获取databaseId属性
			String databaseId = context.getStringAttribute("databaseId");
			// 获取id属性
			String id = context.getStringAttribute("id");
			// 添加上namespace构成完整路径
			id = builderAssistant.applyCurrentNamespace(id, false);
			// 继续处理
			if (databaseIdMatchesCurrent(id, databaseId, requiredDatabaseId)) {
				// 添加到这里
				sqlFragments.put(id, context);
				//添加进去
			}
			//结束
		}
		//结束
	}

然后,继续处理

sqlElement(list, null);

这个一般不处理。

© 著作权归作者所有

共有 人打赏支持
强子1985

强子1985

粉丝 862
博文 935
码字总数 645914
作品 8
南京
架构师
mybatis的继承extend和导入import

本文作废作废。 原因:跨xml引用: use in another mapper, you just need to specify the fully-qualified id. 本文的唯一一点好处可以省去写namespace的麻烦。 1. 问题 在工作中和同事共同...

v1-alpha
2016/10/23
426
1
mybatis_初始化过程源码解析

总览 初始化过程 xml解析器结构 创建SqlSessionFactory 通过SqlSessionFactoryBuilder创建SqlSessionFactory(构建器模式): 进入SqlSessionFactoryBuilder类: 核心就是通过XMLConfigBuilder解...

grace_233
09/14
0
0
【深入浅出MyBatis系列三】Mapper映射文件配置

深入浅出MyBatis系列 【深入浅出MyBatis系列一】MyBatis入门 【深入浅出MyBatis系列二】配置简介(MyBatis源码篇) 【深入浅出MyBatis系列三】Mapper映射文件配置 【深入浅出MyBatis系列四】...

陶邦仁
2015/12/22
2.2K
1
mybatis源码阅读(三):mybatis初始化(下)mapper解析

MyBatis 的真正强大在于它的映射语句,也是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% ...

lemonLove
05/09
0
0
MyBatis 源码分析 - 映射文件解析过程

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

田小波⊰
07/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

20180920 rzsz传输文件、用户和用户组相关配置文件与管理

利用rz、sz实现Linux与Windows互传文件 [root@centos01 ~]# yum install -y lrzsz # 安装工具sz test.txt # 弹出对话框,传递到选择的路径下rz # 回车后,会从对话框中选择对应的文件传递...

野雪球
今天
2
0
OSChina 周四乱弹 —— 毒蛇当辣条

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 达尔文:分享花澤香菜/前野智昭/小野大輔/井上喜久子的单曲《ミッション! 健?康?第?イチ》 《ミッション! 健?康?第?イチ》- 花澤香菜/前野智...

小小编辑
今天
8
3
java -jar运行内存设置

java -Xms64m #JVM启动时的初始堆大小 -Xmx128m #最大堆大小 -Xmn64m #年轻代的大小,其余的空间是老年代 -XX:MaxMetaspaceSize=128m # -XX:CompressedClassSpaceSize=6...

李玉长
今天
4
0
Spring | 手把手教你SSM最优雅的整合方式

HEY 本节主要内容为:基于Spring从0到1搭建一个web工程,适合初学者,Java初级开发者。欢迎与我交流。 MODULE 新建一个Maven工程。 不论你是什么工具,选这个就可以了,然后next,直至finis...

冯文议
今天
2
0
RxJS的另外四种实现方式(四)——性能最高的库(续)

接上一篇RxJS的另外四种实现方式(三)——性能最高的库 上一篇文章我展示了这个最高性能库的实现方法。下面我介绍一下这个性能提升的秘密。 首先,为了弄清楚Most库究竟为何如此快,我必须借...

一个灰
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部