Mybatis源码解读(一)初始化

首先我们需要了解mybatis初始化大致做了什么

1. 创建SqlSessionFactory
2. 通过SqlSessionFactory来创建sqlSession

那么初始化中创建SqlSessionFactory需要什么,配置文件和mapper文件如何加载,如何调用sql等到底是如何实现的呢,接下来就进入源码解读


为了创建SqlSessionFactory,mybatis需要读取配置文件并且注入大量属性值
因为使用的spring配置的Mybatis,所以使用SqlSessionFactoryBean的buildSqlSessionFactory方法

其中创建了ConfigurationXmlConfigBuilder,在初始化过程中起着重要作用
buildSqlSessionFactory方法前部都在将spring中的配置信息设置到Configuration对象中。
例如下图:向Configuration注入了spring的事务管理

接下来重点来了,当检测到mapperLocations时,即mapper文件的所在路径时,开始解析配置文件
 

重点介绍这个方法xmlMapperBuilder.parse()

parse()方法中有两个重要方法

  1. configurationElement
  2. bindMapperForNamespace

(1)configurationElement方法主要做了:

1. 组装builderAssistant,用于存储组装时需要的参数
2. 继续给Configuration添加属性,如缓存、命名空间
3. buildStatementFromContext负责解析sql

buildStatementFromContext方法,该方法的入参是标签为“select|insert|update|delete”的节点,分别对应一个XNode,随后遍历获取节点的属性,传入builderAssistant.addMappedStatement()方法。这个方法返回MappedStatement,保存着mapper每个标签下的所有信息。每个MappedStatement组装完成后都会保存到Configuration中去

(2)bindMapperForNamespace方法主要用于:

将MappedStatement与Namespace绑定在一起,并在MapperRegistry中的knownMappers(一个保存着mapper代理类的map)添加一个代理类
最后,parse结束返回configuration,根据configuration创建SqlSessionFactory

到这里SqlSessionFactory创建完毕,创建过程中的所有属性配置全部由一个configuration带入。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

古柏树下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值