Mybatis技術(shù)內(nèi)幕——筆記(1)

Mybatis技術(shù)內(nèi)幕——筆記(1)

第一章——快速入門

ORM簡(jiǎn)介

傳統(tǒng)JDBC編程

主要步驟:

1.注冊(cè)驅(qū)動(dòng)
2.通過DriverManager打開數(shù)據(jù)庫連接
3.通過數(shù)據(jù)庫連接創(chuàng)建Statement對(duì)象(預(yù)執(zhí)行語句對(duì)象)
4.通過Statement對(duì)象執(zhí)行SQL鲸湃,得到ResultSet結(jié)果對(duì)象
5.ResultSet結(jié)果對(duì)象轉(zhuǎn)換成JavaBean對(duì)象
6.關(guān)閉連接、釋放資源

重點(diǎn)是第5點(diǎn)
1-6的步驟都可以通過一個(gè)工具類去操作统锤,因 為都是通用的涮帘。但第5點(diǎn)無法通用渔隶,不同結(jié)果或者相同結(jié)果映射的JavaBean都可能不同录粱。

所以出現(xiàn)了ORM框架

常見持久化框架

  • Hibernate
  • JPA
  • Spring JDBC
  • Mybatis

Mybatis 示例

Mybatis的配置文件

加載衣赶、使用

1.加載,InputStream
2.根據(jù)文件里的配置創(chuàng)建SqlSessionFactory
3.SqlSession創(chuàng)建SqlSesson
4.SqlSession執(zhí)行SQL
5.SqlSession提交事務(wù)
6.關(guān)閉SqlSession對(duì)象

Mybatis 整體架構(gòu)

整體架構(gòu)分為三層:基礎(chǔ)支持層,核心處理層仅孩,接口層

基礎(chǔ)支持層

反射模塊

對(duì)Java反射進(jìn)行了良好封裝托猩,提供了更加簡(jiǎn)潔易用的API,方便調(diào)用杠氢,并對(duì)反射操作進(jìn)行了一系列優(yōu)化站刑。

類型轉(zhuǎn)換模塊

主要功能:

  • 別名機(jī)制(為簡(jiǎn)化配置文件)
  • 實(shí)現(xiàn)JDBC類型與Java類型間的轉(zhuǎn)換
日志模塊

主要功能就是集成第三方日志框架

資源加載模塊

主要是對(duì)類加載器進(jìn)行封裝,確定類加載器的使用順序鼻百,并提供加載文件以及其他資源文件的功能。
Resources類封裝了類加載器摆尝。

解析器模塊

例如:XPathParser類

主要功能:

  • 對(duì)XPath進(jìn)行封裝
  • 為處理動(dòng)態(tài)SQL語句中的占位符提供支持
數(shù)據(jù)源模塊

優(yōu)秀的數(shù)據(jù)源組件能提升ORM框架乃至整個(gè)應(yīng)用的性能温艇。

主要是提供相應(yīng)的數(shù)據(jù)源實(shí)現(xiàn),還提供了與第三方數(shù)據(jù)源集成的接口堕汞。

事務(wù)管理

提供了事務(wù)接口和簡(jiǎn)單實(shí)現(xiàn)∩装現(xiàn)在多數(shù)事務(wù)由Spring框架管理,所以主要是事務(wù)接口與Spring的集成

緩存模塊

主要是優(yōu)化數(shù)據(jù)庫性能

Mybatis提供了一級(jí)緩存和二級(jí)緩存讯检。

注意琐鲁!

Mybatis中自帶的這兩級(jí)緩存與Mybatis以及整個(gè)應(yīng)用是運(yùn)行在同一個(gè)JVM中的,共享同一塊堆內(nèi)存人灼。

所有緩存數(shù)據(jù)量過大围段,可能會(huì)影響系統(tǒng)中其他功能。所以優(yōu)化考慮使用Redis投放、Memcashe等緩存產(chǎn)品奈泪。

Binding模塊

Binding模塊將用戶自定義的Mapper接口與映射配置文件關(guān)聯(lián)起來,系統(tǒng)可以通過調(diào)用自定義Mapper接口中的方法執(zhí)行相應(yīng)的SQL語句灸芳。

其實(shí)我還是有點(diǎn)不太明白涝桅,所以后面還要去了解一下

核心處理層

在核心處理層中,實(shí)現(xiàn)了Mybatis的核心處理流程烙样,其中包括Mybatis的初始化以及完成一次數(shù)據(jù)庫操作的涉及的全部流程

配置解析

初始化過程中冯遂,加載Mybatis-config.xml配置文件、映射配置文件谒获、Mapper接口中的注解信息蛤肌,解析后會(huì)形成相應(yīng)的對(duì)象保存到Configuration對(duì)象中。

SQL解析與scriptin模塊

拼湊SQL語句究反、<where>,<if>,<foreach>等的動(dòng)態(tài)生成寻定。

SQL執(zhí)行

SQL的執(zhí)行涉及多個(gè)組件。

Executor主要負(fù)責(zé)維護(hù)一精耐、二級(jí)緩存狼速,并提供事務(wù)管理相關(guān)操作,它會(huì)將數(shù)據(jù)庫相關(guān)操作委托給StatementHandler完成卦停。

StatementHandler通過ParameterHandler完成SQL語句的實(shí)參綁定向胡,然后通過java.sql.Statement執(zhí)行SQL并得到結(jié)果集恼蓬,最后通過ResultSetHandler完成結(jié)果集映射交返回對(duì)象。

插件

Mybatis并不能完美切合所有應(yīng)用場(chǎng)景僵芹,因此可以利用插件對(duì)Mybatis進(jìn)行擴(kuò)展处硬。但要注意,別讓插件影響到Mybatis拇派。

接口層

核心是SqlSession接口

定義了Mybatis暴露給應(yīng)用程序調(diào)用的API

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末荷辕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子件豌,更是在濱河造成了極大的恐慌疮方,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茧彤,死亡現(xiàn)場(chǎng)離奇詭異骡显,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)曾掂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門惫谤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人珠洗,你說我怎么就攤上這事溜歪。” “怎么了险污?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵痹愚,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我蛔糯,道長(zhǎng)拯腮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任蚁飒,我火速辦了婚禮动壤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘淮逻。我一直安慰自己琼懊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布爬早。 她就那樣靜靜地躺著哼丈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪筛严。 梳的紋絲不亂的頭發(fā)上醉旦,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼车胡。 笑死檬输,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的匈棘。 我是一名探鬼主播丧慈,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼主卫!你這毒婦竟也來了逃默?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤队秩,失蹤者是張志新(化名)和其女友劉穎笑旺,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體馍资,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年关噪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鸟蟹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡使兔,死狀恐怖建钥,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情虐沥,我是刑警寧澤熊经,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站欲险,受9級(jí)特大地震影響镐依,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜天试,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一槐壳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧喜每,春花似錦务唐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至刚照,卻和暖如春刑巧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工海诲, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留繁莹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓特幔,卻偏偏與公主長(zhǎng)得像咨演,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蚯斯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

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

  • 1. 簡(jiǎn)介 1.1 什么是 MyBatis 薄风? MyBatis 是支持定制化 SQL、存儲(chǔ)過程以及高級(jí)映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,455評(píng)論 0 4
  • 1 引言# 本文主要講解JDBC怎么演變到Mybatis的漸變過程拍嵌,重點(diǎn)講解了為什么要將JDBC封裝成Mybait...
    七寸知架構(gòu)閱讀 76,442評(píng)論 36 980
  • 1脆侮、談?wù)勀銓?duì)Struts的理解锌畸。 答: 1.struts是一個(gè)按MVC模式設(shè)計(jì)的Web層框架,其實(shí)它就是一個(gè)大大的...
    慕容小偉閱讀 2,769評(píng)論 0 13
  • 時(shí)光易老靖避,明天就是立秋了潭枣! 當(dāng)激情演化成一種淡泊和高遠(yuǎn),生活里幻捏,那些曾經(jīng)的傷痛盆犁,卻使我們學(xué)會(huì)了在天地間行走和歌唱!...
    Swings6閱讀 201評(píng)論 0 1
  • 很小的時(shí)候粘咖,就想著去當(dāng)兵蚣抗,保家衛(wèi)國(guó)!可能是我們那一代環(huán)境的熏陶瓮下,而造就我們的理想吧翰铡,那時(shí)候隨便抓一揪人,問及他們的...
    很帥的粑粑閱讀 171評(píng)論 0 2