說到mybatis,相信很多小伙伴都對它很熟悉不過了,mybatis是一個orm(對象關系映射)框架,可以靈活的根據需求進行sql語句的寫,也增加了許多動態sql,來應對不同的場景,可謂是程序猿們一大熱點。要想對他熟悉的使用,我們需要對他進行分析,才能運用自如。
? ? 首先,mybatis初始化流程其實也就幾部分
1、讀配置文件,加載輸入流。
2、創建一個sqlSessionFactoryBuilder,使用sqlSessionFactoryBuilder對象調用build方法創建一個sqlsessionfactory對象。
3.第三步,根據返回的sqlsessionfactory對象,打開一個sqlsession,供我們進行相關操作。
在這里主要的就是其中的第二步,最為關鍵。這里我們仔細分析一下。
進入sqlSessionfactorybuilder之后調用構造方法,在build方法中注意看紅色框里面的兩行,首先是new了個xmlConfigBuilder,然后將我們之前讀配置文件用到的輸入流傳入,其他參數為null,我們繼續跟進去看看怎么回事。
在xmlConfigBuilder里面,會初始化一個叫做Configuration這樣一個對象,這個對象在之后就保存了關于mybatis配置文件里面的一些信息以及mapper文件的信息。之后回到new xmlConfigBuilder那個地方。如下圖框所示,小框里面是調用xmlConfigBuilder的parser方法對mybatis配置文件進行解析,方法最終返回一個Configuration對象,里面保存了配置文件的各種信息。然后再用build方法,構造一個sqlSessionFactory,其實是DefaultSqlSessionFactory。
下圖就是開始對配置文件進行解析,主要對environments和mappers標簽進行分析。
root.evalNode('environments')這個就是找到配置文件environments這個標簽。
通過讀取配置文件相關信息后,將保存到configuration對象里面。然后在sqlSessionFactory里面調用build方法,返回一個defaultSqlSessionFactory對象,之后在打開一個sqlSession連接,就可以進行相關操作了。