深入了解 MyBatis 原始碼解析(一)

2021-10-01 19:27:46 字數 867 閱讀 5941

之前在接觸mybatis的時候,就覺得這個技術的思想很新穎,要實現這些功能並不難,但是如何實現,以及mybatis的整體架構卻是我遠遠不及的。

而mybatis依然將這些功能非常優雅的實現了。

mybatis 模組分析

這裡,我們先簡單的劃分一下mybatis的功能模組。

配置解析

mybatis使用的是configuration類來對映整個mybatis的配置,configuration的生成是通過sqlsessionfactorybuilder解析,使用的是jdk中的dom介面,這裡mybatis並沒有使用單例實現configuration,原因如下:

有可能在同樣的環境下,不同的地方會使用不同的配置,因此configutation應該使用注入的方式,

一旦使用了單例,那麼訪問configuration的**就會散落在各個地方,如果後續想要修改,就會非常麻煩,

不過mybatis中幾乎所有的**都會訪問configuration,因此幾乎所有的物件的構造方法都會帶有configuration引數,這樣看起來也是比較繁瑣的

sql 執行

mybatis中,sql的執行都是通過executor完成,其主要提供了:

增刪查改等功能

事務的提交,回滾等

快取延遲載入

對資料結果的處理

引數對映

mybatis提供了可自己配置的引數對映,主要用來解決一些類似列舉的特殊情況,其主要介面為typehandler

總的來說,mybatis的結構設計看著十分優雅,非常值得一學。

這裡補上一張mybatis的總結結構:

MyBatis2深入了解

3.測試的完成 二.高階查詢 三.關係配置 重難點 1.多對一 1.1 domain準備 1.2 關係對映 巢狀結果 1.3 關係對映 巢狀查詢 2.一對多的配置 2.1 相應的domain準備 2.2 巢狀結果 2.3 巢狀查詢 四.ssm三大框架整合 4.1 導包 4.2 jdbc.proper...

從PHP的原始碼中深入了解stdClass類

在百科中,對於stdclasxckowkjhts的定義如下 複製 如下 stdclas在php5才開始被流行。而stdclass也是zend的乙個保留類。stdclass是php的乙個基類,所有的類幾乎都繼承這個類,所以任何時候都可以被new,可以讓這個變數成為乙個object。同時,這個基類又有乙...

深入了解A

一 前言 在這裡我將對a 演算法的實際應用進行一定的 並且舉乙個有關a 演算法在最短路徑搜尋的例子。值得注意的是這裡並不對a 的基本的概念作介紹,如果你還對a 演算法不清楚的話,請看姊妹篇 初識a 演算法 這裡所舉的例子是參考amit主頁中的乙個源程式,使用這個源程式時,應該遵守一定的公約。二 a ...