XMLConfigBuilder 继承自BaseBuilder
public SqlSessionFactory build(InputStream inputStream, String environment, Properties props) {
try {
XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, props);
Configuration config = parser.parse();
return build(config);
} catch (Exception e) {
throw ExceptionFactory.wrapException("Error building SqlSession.", e);
} finally {
ErrorContext.instance().reset();
try {
inputStream.close();
} catch (IOException e) {
// Intentionally ignore. Prefer previous error.
}
}
}
XMLConfigBuilder 构造方法传递三个参数inputStream, environment, props
parse解析方法用来解析XML配置文件
public Configuration parse() {
if (parsed) {
throw new BuilderException("Each MapperConfigParser can only be used once.");
}
parsed = true;
parseConfiguration(parser.evalNode("/configuration"));
return configuration;
}
解析的配置文件如下:-->首先抓住根节点configuration
然后解析根节点之下的子节点方法如下:
private void parseConfiguration(XNode root) {
try {
//解析别名定义,使用了反射技术
typeAliasesElement(root.evalNode("typeAliases"));
//解析插件配置
pluginElement(root.evalNode("plugins"));
objectFactoryElement(root.evalNode("objectFactory"));
objectWrapperFactoryElement(root.evalNode("objectWrapperFactory"));
//解析属性文件配置
propertiesElement(root.evalNode("properties"));
settingsElement(root.evalNode("settings"));
//解析数据库配置信息environments下面可以包含多个environment,每个environments就是一个数据库连接池,通过ID进行唯一性区分
environmentsElement(root.evalNode("environments"));
typeHandlerElement(root.evalNode("typeHandlers"));
//解析SQL映射文件
mapperElement(root.evalNode("mappers"));
} catch (Exception e) {
throw new BuilderException("Error parsing SQL Mapper Configuration. Cause: " + e, e);
}
}
原创不易,欢迎打赏,请认准正确地址,谨防假冒
相关推荐
XMLConfigBuilder.parseConfiguration 方法是 MyBatis 中的核心方法之一,该方法负责解析 MyBatis 的配置文件,包括属性解析、加载 settings 节点、加载自定义 VFS、解析类型别名、加载插件、加载对象工厂、创建对象...
标题中的"MyBatis源码包"指的是包含了MyBatis框架的源代码文件,这对于开发者来说是一份宝贵的学习资源。通过阅读源码,开发者可以深入理解MyBatis的工作原理,学习如何设计和实现一个高效的ORM框架,以及如何处理...
根据提供的文件内容,我们可以展开关于Mybatis源码分析的详细知识点介绍。Mybatis是一个流行的Java持久层框架,它用于简化与数据库交互的复杂性。源码分析是理解框架内部工作原理的绝佳方式,同时也能够加深对设计...
在深入探讨MyBatis 3.3.1的源码之前,先了解一下MyBatis的基本概念和工作原理。 MyBatis的核心是SQL映射文件和SqlSessionFactory。SQL映射文件包含了SQL语句和结果映射,而SqlSessionFactory则负责创建SqlSession...
`mybatis-3-mybatis-3.4.6`可能是一个包含Mybatis源码的另一个形式,方便开发者进行学习和调试。源码分析对于理解框架内部工作流程,以及自定义扩展非常有帮助。例如,你可以研究`org.apache.ibatis.builder.xml....
首先,MyBatis源码中有一个XMLConfigBuilder类,这个类负责加载MyBatis的配置文件,包括日志配置。loadCustomLogImpl方法是加载日志配置的入口,通过这个方法,MyBatis可以加载指定的日志实现类,并将其设置到...
在分析MyBatis源码时,可以采用宏观和微观两种视角。宏观上理解整个框架的架构和流程,微观上深入到具体的类和方法,通过阅读和调试代码来理解其实现细节。同时,绘制流程图或UML图能帮助更好地梳理组件间的交互。 ...
通过`XMLConfigBuilder`解析这些配置,构建出`Configuration`对象,它是整个MyBatis框架的中心。 2. **SqlSessionFactory**:在MyBatis中,`SqlSessionFactory`是主要的工厂类,用于创建`SqlSession`实例。它是线程...
### Mybatis源码分析 #### 1. 解析配置文件,创建SQLSessionFactory 在MyBatis框架中,创建`SQLSessionFactory`是初始化整个框架的重要步骤之一。这一过程涉及到了配置文件的读取与解析,以及如何构建出可以用于...
对MyBatis源码的分析通常从XML配置文件解析开始,这是整个框架初始化的关键步骤。主要关注以下两个切入点: - **XMLConfigBuilder#parseConfiguration**:解析mybatis-config.xml文件,生成Configuration对象,...
MyBatis 源码分析与实现 在深入探讨 MyBatis 源码之前,我们先了解一下 MyBatis 的基本架构。MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。其核心功能包括 SQL 映射文件、动态 SQL ...
在深入探讨MyBatis 3.2.6版本的源码之前,我们首先需要了解MyBatis的基本概念和功能。 MyBatis的核心部分主要包括SqlSessionFactory、SqlSession和Mapper接口。SqlSessionFactory是MyBatis的主要工厂类,负责创建...
在深入探讨MyBatis 3.2的源码之前,我们先了解一下MyBatis的基本概念和架构。 MyBatis的核心组件包括:SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession和Mapper接口。SqlSessionFactoryBuilder用于构建...
MyBatis 是一款著名的持久层框架,它支持定制化 SQL...通过阅读 MyBatis 3.4.5 的源码,不仅可以加深对 MyBatis 工作原理的理解,还能帮助我们更高效地解决实际开发中的问题,优化性能,甚至开发自己的 MyBatis 插件。
2. **XMLConfigBuilder**:解析mybatis-config.xml配置文件,构建Configuration对象。 3. **XMLMapperBuilder**:解析Mapper XML文件,生成MapperRegistry中的MapperConfig。 4. **MappedStatement**:封装了SQL的...
通过阅读源码,你可以深入理解 MyBatis 的工作原理,如动态 SQL、参数绑定、结果映射等核心概念。 在 MyBatis 中,Mapper 接口是业务逻辑与 SQL 查询的桥梁。Mapper XML 文件定义了 SQL 语句和方法映射,而 Mapper ...
在MyBatis中,`XMLConfigBuilder.java`是解析MyBatis配置文件的核心类。它负责读取XML配置文件,将XML元素转换为Java对象,如`SqlSessionFactoryBuilder`、`SqlSessionFactory`、`Configuration`等。在处理SQLMap时...
通过对MyBatis源码的深入分析,我们可以更清晰地理解其实现原理,更好地利用其特性,甚至定制自己的持久层解决方案。在阅读源码的过程中,还可以学习到设计模式、反射、AOP等Java编程技术,提升我们的编程能力。
1. **解析配置文件**:`XMLConfigBuilder`类中的`pluginElement`方法用于解析`<plugins>`标签下的配置信息。通过反射实例化拦截器,并将其添加到全局配置对象`Configuration`中。 ```java private void ...
以上流程是基于MyBatis 3.5.5版本源码的分析,MyBatis的执行流程是建立在配置好的映射文件和接口绑定基础上的,通过动态代理机制生成Mapper接口的代理对象,并通过配置的处理器来处理SQL语句的输入输出。了解这一...