Mybatis加载流程分析(一)- 开篇
目录
目录
Mybatis是什么?
官方解释:
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
其实就是一款与数据库打交道的框架,与单纯使用JDBC去连接数据库相比,框架能够给予的东西还是蛮多的,例如:自动打开连接、事务管理、动态SQL等等。
既然有这么优秀的框架,那么我们来分析一下Mybatis的源码与原理,在接下来的文章会从按流程来分析,遇到Mybatis的基础组件会展开分析,也就是以流程为主基础组件为辅的结构去解析源码,在文章的后面也会附上一些参考文章供大家深入的了解
Mybatis加载流程
从简易的时序图看出整个加载流程主要的为了能够构建出Configuration,从而构建SqlSessionFactory,Configuration是个重量级配置类,也是Mybatis框架核心配置,几乎贯穿了整个框架,而构建Configuration是在XMLConfigBuilder完成的,所以本篇文章主要是针对该类如何加载与解析配置文件,大概流程如下:
- 加载配置文件
mybatis-config.xml(也可以不是这个文件名,在下文称配置文件),以下都是解析配置文件中的节点 - 解析
<properties />,解析出动态配置 - 解析
<settings />节点,- 加载用户自定义VFS实现类
- 加载用户自定义日志实现类
- 解析
<typeAliases />,该配置是指定别名对应的类型 - 解析
<plugins />,加载用户自定义的插件 - 加载
<objectFactory />,用户自定义的对象工厂类 - 加载
<objectWrapperFactory />,用户自定义的对象包装工厂 - 加载
<reflectorFactory />,用户自定义的反射器工厂 - 将settings得到的配置全部塞进
Configuration对象 - 加载
<environments />环境配置信息 - 加载
<databaseIdProvider />数据库厂商标识 - 加载
<typeHandlers />用户自定义的typeHandler - 加载
<mappers />加载每个Mapper.xml文件
以上流程可从XMLConfigBuilder#parseConfiguration获得,代码如下:
|
|
总结
本篇文章讲述一下之后文章的一个路线,接下来会深入解析如何去加载,并且基础组件是怎么规划的,后续都会一一讲述