01.Mybatis原理

Mybatis實現(xiàn)原理陋葡,步驟如下:

1.構(gòu)建SqlSessionFactory過程

SqlSessionFactory接口是Mybatis操作數(shù)據(jù)庫的入口铆铆,相當(dāng)于JDBC 的Connection 類型豌汇,它提供創(chuàng)建 Mybatis 核心接口SqlSession

創(chuàng)建過程:

第一步:XMLConfigBuilder 解析xml 配置文件 郎楼,生產(chǎn) Configuration對象,所有的配置信息

? ? ? ?都會解析到Configuration里面

第二步:Configuration對象去創(chuàng)建 SqlSessionFactory實現(xiàn)類 DefaultSqlSessionfactory,

? ? ? ? ?InputStreaminputStream = Resources.getResourceAsStream(resource)

? ? ? ? ?SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder.build(inputStream);

2. 生產(chǎn)SqlSession? sqlSessionFactory.openSession();

? SqlSession 是Mybatis實際的操作數(shù)據(jù)庫對象举哟,事務(wù),執(zhí)行器都是在創(chuàng)建SqlSession是生產(chǎn)迅矛。

? 創(chuàng)建步驟

第一步:生成事務(wù)工廠對象 TransactionFactory,在事務(wù)工廠中創(chuàng)建事務(wù)對象妨猩。

第二步:生成執(zhí)行器Executor,執(zhí)行器有三種類型SIMPLE诬乞,REUSE册赛,BATCH 钠导。

SIMPLE:常規(guī)執(zhí)行器震嫉,默認就是此類型執(zhí)行器,每次執(zhí)行都會創(chuàng)建一個statement,用完后關(guān)閉

REUSE:可重用執(zhí)行器牡属,將statement存入map中票堵,操作map中的statement而不會重復(fù)創(chuàng)建statement

BATCH:批處理執(zhí)行器,doUpdate預(yù)處理存儲過程或批處理操作逮栅,doQuery提交并執(zhí)行過程

第三步:就是生成SqlSession的實現(xiàn)類DefaultSqlSession

3. SqlSession 通過映射器悴势,執(zhí)行操作

映射器是通過動態(tài)代理來實現(xiàn)的,通過動態(tài)代理措伐,生成Mapper的實現(xiàn)類特纤,和實際的執(zhí)行方法,執(zhí)行sql侥加。

下篇代理模式捧存,順便談SqSession 映射器原理

流程圖如下:


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市担败,隨后出現(xiàn)的幾起案子昔穴,更是在濱河造成了極大的恐慌,老刑警劉巖提前,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吗货,死亡現(xiàn)場離奇詭異,居然都是意外死亡狈网,警方通過查閱死者的電腦和手機宙搬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拓哺,“玉大人勇垛,你說我怎么就攤上這事⊥厥郏” “怎么了窥摄?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長础淤。 經(jīng)常有香客問我崭放,道長哨苛,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任币砂,我火速辦了婚禮建峭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘决摧。我一直安慰自己亿蒸,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布掌桩。 她就那樣靜靜地躺著边锁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪波岛。 梳的紋絲不亂的頭發(fā)上茅坛,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機與錄音则拷,去河邊找鬼贡蓖。 笑死,一個胖子當(dāng)著我的面吹牛煌茬,可吹牛的內(nèi)容都是我干的斥铺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼坛善,長吁一口氣:“原來是場噩夢啊……” “哼晾蜘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起浑吟,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤笙纤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后组力,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體省容,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年燎字,在試婚紗的時候發(fā)現(xiàn)自己被綠了腥椒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡候衍,死狀恐怖笼蛛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蛉鹿,我是刑警寧澤滨砍,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響惋戏,放射性物質(zhì)發(fā)生泄漏领追。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一响逢、第九天 我趴在偏房一處隱蔽的房頂上張望绒窑。 院中可真熱鬧,春花似錦舔亭、人聲如沸些膨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽订雾。三九已至,卻和暖如春职抡,著一層夾襖步出監(jiān)牢的瞬間葬燎,已是汗流浹背误甚。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工缚甩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人窑邦。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓擅威,卻偏偏與公主長得像,于是被迫代替她去往敵國和親冈钦。 傳聞我的和親對象是個殘疾皇子郊丛,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1. 簡介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL瞧筛、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,520評論 0 4
  • # 前言 在java程序員的世界里厉熟,最熟悉的開源軟件除了 Spring,Tomcat较幌,還有誰呢揍瑟?當(dāng)然是 Mybat...
    莫那一魯?shù)?/span>閱讀 3,290評論 3 11
  • MyBatis 理論篇 [TOC] 什么是MyBatis ?MyBatis是支持普通SQL查詢,存儲過程和高級映射...
    有_味閱讀 2,898評論 0 26
  • Mybatis介紹 MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache...
    day_Sunny閱讀 2,662評論 0 6
  • 回來又幫了兩天工,終于能歇會了乍炉。這兩天累雖不算太累绢片,就是時間熬人,總感覺時間過的太慢岛琼。在上面底循,不知不覺就一兩個小時...
    goldfish2017閱讀 254評論 0 0