mybatis源码阅读之SqlSessionFactory创建

很早就学习了mybatis,但是一直没有对mybatis有深入的研究,最近看了mybatis的使用文档,准备研究下mybatis的底层实现。推荐大家看看这个专栏:
深入了解Mybatis原理

1.先来看看代码上是如何创建SqlSessionFactory
这里写图片描述

  • 读取配置文件mybatis-config.xml,变成输入流。
  • SqlSessionFactory的创建者SqlSessionFatoryBuilder通过build()方法创建SqlSessionFactory

2.SqlSessionFactory创建过程
这里写图片描述
图我是使用http://www.draw.io在线画图构建的。
在我的github上有http://www.draw.io可以直接导入的xml文件或是直接下载查看的图片。
图片的地址:https://github.com/bluesnail95/UML/tree/master/MyBatis

3.各片段源码分析
(1)在1中的new SqlSessionFactoryBuilder().build(inputStream)调用的是SqlSessionFactoryBuilder类中的以下方法。
这里写图片描述

(2)调用重载方法build()初始化Configuration
这里写图片描述

(3)XMLConfigBuilder
这里写图片描述

调用XPathParser的构造方法创建配置文件输入流的Document
这里写图片描述

这里写图片描述

XMLConfigBuilder调用父类的构造方法创建了Configuration
这里写图片描述

这里写图片描述

(2)中的parser.evalNode(“/configuration”)获取的是在mybatis-config.xml中的configuration元素。然后调用parseConfiguration()方法解析configuration元素下的其他子元素,包括properties,settings,mappers等等。
这里写图片描述

解析configuation元素过程
这里写图片描述

(4)解析完xml,初始化Configuration之后,创建DefaultSqlSessionFactory。这个也是最终我们用来创建SqlSession的工厂。
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值