文档章节

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

强子哥哥
 强子哥哥
发布于 2017/04/06 13:12
字数 170
阅读 14
收藏 1
点赞 0
评论 0

这一节,主要是

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);

这个一般不处理。

© 著作权归作者所有

共有 人打赏支持
强子哥哥

强子哥哥

粉丝 856
博文 551
码字总数 647493
作品 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 ⋅ 1

【深入浅出MyBatis系列三】Mapper映射文件配置

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

陶邦仁 ⋅ 2015/12/22 ⋅ 1

mybatis源码阅读(三):mybatis初始化(下)mapper解析

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

lemonLove ⋅ 05/09 ⋅ 0

【深入浅出MyBatis系列十一】缓存源码分析

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

陶邦仁 ⋅ 2015/12/28 ⋅ 0

MyBatis源码分析(三)-SqlSession理解

SqlSession理解 一、创建SqlSession 1.创建事务 a.事务工厂根据DataSource创建一个事务对象(Connection对象,事务级别,是否自动提交) b.事务工厂根据Connection创建一个事务对象(事务级别...

飓风2000 ⋅ 2014/07/24 ⋅ 0

Mybatis源码概览(二) ---Plugin扩展与Spring结合原理

本文主要介绍Mybatis通过动态代理避免对sqlSession直接调用,而是通过MapperProxy代理技术生成了具体dao接口的Mapper实例,里面封装了对sqlSession的调用;Mybatis预留了Interceptor接口,用...

robin-yao ⋅ 2016/03/23 ⋅ 0

Mybatis 通用Crud-设计思路

更新日志 <!-- 2016-11-13更新 start --> 1 新增批量操作数据方法:批量插入,根据条件删除,根据条件更新指定的列名-字段值。 2 新增高级查询方法:可设置查询列,查询条件,排序,分页。 ...

LittleNewbie ⋅ 2016/11/12 ⋅ 0

Mybatis3.3.x技术内幕(九):Mybatis初始化流程(中)

Mybatis初始化流程,其实就是组装重量级All-In-One对象Configuration的过程,主要分为系统环境参数初始化和Mapper映射初始化。 上一节中,粗略讲述了Mybatis初始化的基本步骤,本节,将详细分...

祖大俊 ⋅ 2016/05/02 ⋅ 0

MyBaits基本概念和原理

什么是MyBatis? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XM...

sun2shadows ⋅ 2017/09/14 ⋅ 0

MyBatis整合Spring的实现(8)

1 方法settingsElement private void settingsElement(XNode context) throws Exception { if (context != null) { Properties props = context.getChildrenAsProperties(); // Check that......

tara_qri ⋅ 2015/10/26 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Mahout基于内存的DataMode 推荐引擎Demo2

Mahout基于内存的DataMode 推荐引擎Demo2 //注释的部分是基于文件也可以理解为基于日志文件的, //DataModel 可以有很多种,实现abstractDataMode的子类,原则上都可以作为数据源,个人觉得,...

xiaomin0322 ⋅ 9分钟前 ⋅ 0

Docker部署Tomcat及Web应用

一、在线下载docker yum install -y epel-releaseyum install docker-io # 安装dockerchkconfig docker on # 加入开机启动service docker start # 启动docker服务 1 ...

Jeam_ ⋅ 9分钟前 ⋅ 0

研发运营一体化能力成熟度模型

研发运营一体化是指在 IT 软件及相关服务的研发及交付过程中,将应用的需求、开发、测试、部 署和运营统一起来,基于整个组织的协作和应用架构的优化,实现敏捷开发、持续交付和应用运营的无...

stars永恒 ⋅ 14分钟前 ⋅ 0

jQuery缩小放大触发事件

jquery的resize()方法使用 <html> <head> <script type="text/javascript" src="/jquery/jquery.js"></script> <script type="text/javascript"> var i = 0; $(document).ready(function(){ ......

RobertZou ⋅ 15分钟前 ⋅ 0

eclipse python 搭建

https://jingyan.baidu.com/article/9113f81b68ebce2b3214c7e0.html https://www.cnblogs.com/ZhangRuoXu/p/6397756.html https://blog.csdn.net/zhangphil/article/details/78962159 字符集......

之渊 ⋅ 15分钟前 ⋅ 0

weex,react native,flutter

weex: 一次编写,处处运行 RN: 学一次,到处写(针对安卓,IOS平台特性 各自写,会有很大一部分是一样的代码) 这些方案是否真正的解决了跨平台问题呢?从目前的状况来看,很显然是没有的,因...

东东笔记 ⋅ 21分钟前 ⋅ 0

Spring Cloud微服务分布式云架构-集成项目

Spring Cloud集成项目有很多,下面我们列举一下和Spring Cloud相关的优秀项目,我们的企业架构中用到了很多的优秀项目,说白了,也是站在巨人的肩膀上去整合的。在学习Spring Cloud之前大家必...

明理萝 ⋅ 26分钟前 ⋅ 1

SpringMVC图片上传问题解决

当我们上传图片时一直发现: MultipartFile file = null; if (request instanceof MultipartHttpServletRequest) 匹配不上, 解决方案: 在前端xml加入如下配置代码即可 <!-- 图片上传bean --...

泉天下 ⋅ 28分钟前 ⋅ 0

Spring表达式语言(SpEL)

1、SpEL引用 Spring EL在bean创建时执行其中的表达式。此外,所有的Spring表达式都可以通过XML或注解的方式实现。下面将使用Spring表达式语言(SpEL),注入字符串,整数,Bean到属性。 SpEL的...

霍淇滨 ⋅ 44分钟前 ⋅ 0

Gradle使用阿里云镜像

gradle 生命周期中有一个初始化( Initialization )的过程,这个过程运行在 build script 之前,我们可以在这个地方做一点系统全局的设置,如配置仓库地址。 你可以在以下几个位置实现仓库地址...

明MikeWoo ⋅ 53分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部