mybatis使用中的模組互動
在之前的學習中我們知道了,乙個簡單的基礎mybatis專案基本會包含如下幾個必要的部分:
上邊整理的圖中各模組內容的互動,我覺得可以看成是實際開發專案中需要我們自己處理的內容互動,這些基本都還是處理用的階段。
那麼接下來要說的,就是mybatis內部的實現,看一看mybatis裡邊是如何整合和執行的。
mybatis執行時內部流程
程式執行,首先會進入程式入口,我們之前的例子中就是實際的業務處理類,也就是測試類,裡邊的主要**回顧如下:
inputstream inputstream = resources.getresourceasstream("mybatis.xml");上邊的**沒有分支,就是乙個簡單的順序結構。順序結構的程式執行時從上往下,但為了分析出執行過程中的關鍵點,我決定從下往上來看。sqlsessionfactory sessionfactory = new sqlsessionfactorybuilder().build(inputstream);
sqlsession sqlsession = sessionfactory.opensession(true);
這時候會看到sqlsession是從sqlsessionfactory 中拿到的,使用了sqlsessionfactory 的opensession方法。
但是再進一步分析會發現和sqlsession 一樣,sqlsessionfactory也是乙個介面,那麼很顯然需要繼續確定sqlsessionfactory的執行中的子類。
既然這樣,接下來就可以倒回去看,上邊說sqlsession是從sqlsessionfactory 中拿到的,現在可以確定實際是從defaultsqlsessionfactory中拿的,也就是使用了defaultsqlsessionfactory的opensession方法。
在opensession中就會看到最後返回了乙個defaultsqlsession。
那麼到這裡,整個mybatis執行時內部處理的基本脈絡就相對清晰了,可以初步整理為如下圖所示的流程:
MyBatis中的使用
被這個標記所包含的內容將表示為純文字,比如表示文字內容 此標記用於xml文件中,我們先來看看使用轉義符的情況。我們知道,在xml中,等字元是不能直接存入的,否則xml語法檢查時會報錯,如果想在xml中使用這些符號,必須將其轉義為實體,如 這樣才能儲存進xml文件。在使用程式讀取的時候,解析器會自動將...
Mybatis中Logging模組的原始碼分析
週末又來到了公司吹吹空調,順便記錄下mybatis的點點滴滴。首先mybatis不定義日誌系統,完全依賴於第三方系統完成日誌記錄,利用介面卡模式完成實際操作,原始碼如下 1 定義乙個log介面,具有如下方法 public inte ce log2 然後引入第三方日誌,比如 loggingimpl,實...
mybatis中CDATA的使用
在使用mybatis 時我們sql是寫在xml 對映檔案中,如果寫的sql中有一些特殊的字元的話,在解析xml檔案的時候會被轉義,但我們不希望他被轉義,所以我們要使用來解決。是什麼,這是xml語法。在cdata內部的所有內容都會被解析器忽略。如果文字包含了很多的 字元 和 字元 就象程式 一樣,那麼...