MyBatis需要對(duì)配置文件進(jìn)行解析,最終會(huì)解析成一個(gè)Configuration對(duì)象,但是要說(shuō)兩個(gè)配置文件對(duì)應(yīng)了兩個(gè)對(duì)象實(shí)際上也沒(méi)有錯(cuò):
- Configuration對(duì)象,保存了mybatis-config.xml的配置信息。
- MappedStatement,保存了XXXMapper.xml的配置信息乐疆。
但是最終MappedStatement對(duì)象會(huì)封裝到Configuration對(duì)象中,合二為一贬养,成為一個(gè)單獨(dú)的對(duì)象挤土,也就是Configuration。
java8-1581999853-1.png
Configuration是SqlSessionFactory的一個(gè)屬性误算,而SqlSessionFactoryBuilder在build方法中實(shí)際上就是調(diào)用XMLConfigBuilder對(duì)xml文件進(jìn)行解析仰美,然后注入到SqlSessionFactory中
SqlSessionFactory對(duì)象中由于存在Configuration對(duì)象,所以它保存了全局配置信息儿礼,以及初始化環(huán)境和DataSource筒占,而DataSource的作用就是用來(lái)開(kāi)辟鏈接,當(dāng)我們調(diào)用openSession方法時(shí)蜘犁,就會(huì)開(kāi)辟一個(gè)連接對(duì)象并傳給SqlSession對(duì)象翰苫,交給SqlSession來(lái)對(duì)數(shù)據(jù)庫(kù)做相關(guān)操作。
sqlsession-factory.png
我們寫(xiě)的接口是如何結(jié)合在一起的呢
mybatis具體流程.png