下一篇:SqlSession源码分析
2.
进入build()方法,返回值是一个parser.parse()对象
所以是通过一个parse()解析器返回对象
进入parse()方法可以看到,返回的是一个Configuration对象
看看parse()方法是如何返回Configuration对象的,里面有parseConfiguration()方法解析configuration对象
Mybatis配置文件中的标签如下:里面的typeAliases、environments、mappers配置信息同上
配置文件中的标签,全部通过parseConfiguration()方法解析,选一个settingsElement方法进入,看看如何解析settings标签的
进入以后可以看到,我们在settings标签中配置的缓存和延迟加载等属性都保存在了一个configuration对象中
刚刚看了settingsElement()方法,再看看怎么解析mapper的mapperElement()方法
不是package,看看XMLMapperBuilder对象的parse()方法
进入mapperParser.parse()方法,
parse()方法有个configurationElement()方法
看看configurationElement()方法
进入buildStratemetnFromContext()方法,看看如何分析select等标签
先分析select标签有没有databaseId属性
如果mapper.xml文件select标签的databaseId不为空,调用buildStatementFromContext(list,this.configuration.getDatabaseId())方法
进入parseStatementNode()方法,该方法把mapper文件的配置信息,封装为String类型的数据:id,datdabaseId,.....
所以
进入addMappedStatement()方法
=》Mybatis会将Mapper.xml文件中的
所以MappedStatement对象就是
MappedStatement存在于Configuration中、environment(mybatis-config.xml文件配置信息)也是Configuration的属性
可以得出结论:所有配置信息、增删改查标签 全部存在于Configuration中
Configuration又存在于DefaultSqlSessionFactory对象中(SqlSessionFactory)
所以SqlSessionFactory对象——>DefaultSqlSessionFactory——>Configuration——>包含了一切配置信息