mybatis的學習

簡介

MyBatis 是支持普通 SQL查詢铃诬,[存儲過程]和高級映射的優(yōu)秀[持久層]框架烦味。MyBatis 消除了幾乎所有的JDBC代碼和參數(shù)的手工設置以及[結果集]的檢索。MyBatis 使用簡單的 XML或注解用于配置和原始映射龄寞,將接口和 Java 的POJOs(Plain Ordinary Java Objects汰规,普通的 Java對象)映射成數(shù)據(jù)庫中的記錄。

每個MyBatis應用程序主要都是使用Sql[Session]Factory實例的物邑,一個SqlSessionFactory實例可以通過SqlSessionFactoryBuilder獲得溜哮。SqlSessionFactoryBuilder可以從一個xml配置文件或者一個預定義的配置類的實例獲得。

用xml文件構建SqlSessionFactory實例是非常簡單的事情色解。推薦在這個配置中使用類路徑資源(classpath resource)茂嗓,但你可以使用任何Reader實例,包括用文件路徑或file://開頭的url創(chuàng)建的實例科阎。MyBatis有一個實用類----Resources述吸,它有很多方法,可以方便地從類路徑及其它位置加載資源锣笨。

特點

簡單易學:本身就很小且簡單蝌矛。沒有任何第三方依賴,最簡單安裝只要兩個jar文件+配置幾個sql映射文件易于學習票唆,易于使用,通過文檔和源代碼屹徘,可以比較完全的掌握它的設計思路和實現(xiàn)走趋。
靈活:mybatis不會對應用程序或者數(shù)據(jù)庫的現(xiàn)有設計強加任何影響。 sql寫在xml里噪伊,便于統(tǒng)一管理和優(yōu)化簿煌。通過sql語句可以滿足操作數(shù)據(jù)庫的所有需求氮唯。
解除sql與程序代碼的耦合:通過提供DAO層,將業(yè)務邏輯和數(shù)據(jù)訪問邏輯分離姨伟,使系統(tǒng)的設計更清晰惩琉,更易維護,更易單元測試夺荒。sql和代碼的分離瞒渠,提高了可維護性。
提供映射標簽技扼,支持對象與數(shù)據(jù)庫的orm字段關系映射
提供對象關系映射標簽伍玖,支持對象關系組建維護
提供xml標簽,支持編寫動態(tài)sql剿吻。

框架架構

我們把Mybatis的功能架構分為三層:
(1)API接口層:提供給外部使用的接口API窍箍,開發(fā)人員通過這些本地API來操縱數(shù)據(jù)庫。接口層一接收到調(diào)用請求就會調(diào)用數(shù)據(jù)處理層來完成具體的數(shù)據(jù)處理丽旅。
(2)數(shù)據(jù)處理層:負責具體的SQL查找椰棘、SQL解析、SQL執(zhí)行和執(zhí)行結果映射處理等榄笙。它主要的目的是根據(jù)調(diào)用的請求完成一次數(shù)據(jù)庫操作邪狞。
(3)基礎支撐層:負責最基礎的功能支撐,包括連接管理办斑、事務管理外恕、配置加載和緩存處理,這些都是共用的東西乡翅,將他們抽取出來作為最基礎的組件鳞疲。為上層的數(shù)據(jù)處理層提供最基礎的支撐。

動態(tài)SQL

MyBatis 最強大的特性之一就是它的動態(tài)語句功能蠕蚜。如果您以前有使用JDBC或者類似框架的經(jīng)歷尚洽,您就會明白把SQL語句條件連接在一起是多么的痛苦,要確保不能忘記空格或者不要在columns列后面省略一個逗號等靶累。動態(tài)語句能夠完全解決掉這些痛苦腺毫。
盡管與動態(tài)SQL一起工作不是在開一個party,但是MyBatis確實能通過在任何映射SQL語句中使用強大的動態(tài)SQL來改進這些狀況挣柬。動態(tài)SQL元素對于任何使用過JSTL或者類似于XML之類的文本處理器的人來說潮酒,都是非常熟悉的。在上一版本中邪蛔,需要了解和學習非常多的元素急黎,但在MyBatis 3 中有了許多的改進,現(xiàn)在只剩下差不多二分之一的元素。MyBatis使用了基于強大的OGNL表達式來消除了大部分元素勃教。

Mtbatis集成

單獨使用mybatis是有很多限制的(比如無法實現(xiàn)跨越多個session的事務)淤击,而且很多業(yè)務系統(tǒng)本來就是使用spring來管理的事務,因此mybatis最好與spring集成起來使用故源。

Mydbtis優(yōu)缺點

優(yōu)點

與傳統(tǒng)的數(shù)據(jù)庫訪問技術相比污抬,ORM有以下優(yōu)點:
基于SQL語句編程,相當靈活绳军,不會對應用程序或者數(shù)據(jù)庫的現(xiàn)有設計造成任何影響印机,SQL寫在XML里,解除sql與程序代碼的耦合删铃,便于統(tǒng)一管理耳贬;提供XML標簽,支持編寫動態(tài)SQL語句猎唁,并可重用
與JDBC相比咒劲,減少了50%以上的代碼量,消除了JDBC大量冗余的代碼诫隅,不需要手動開關連接
很好的與各種數(shù)據(jù)庫兼容(因為MyBatis使用JDBC來連接數(shù)據(jù)庫腐魂,所以只要JDBC支持的數(shù)據(jù)庫MyBatis都支持)
提供映射標簽,支持對象與數(shù)據(jù)庫的ORM字段關系映射逐纬;提供對象關系映射標簽蛔屹,支持對象關系組件維護
能夠與Spring很好的集成

缺點

SQL語句的編寫工作量較大,尤其當字段多豁生、關聯(lián)表多時兔毒,對開發(fā)人員編寫SQL語句的功底有一定要求
SQL語句依賴于數(shù)據(jù)庫,導致數(shù)據(jù)庫移植性差甸箱,不能隨意更換數(shù)據(jù)庫

MyBatis框架適用場景

MyBatis專注于SQL本身育叁,是一個足夠靈活的DAO層解決方案。
對性能的要求很高芍殖,或者需求變化較多的項目豪嗽,如互聯(lián)網(wǎng)項目,MyBatis將是不錯的選擇豌骏。

c.png
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末龟梦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子窃躲,更是在濱河造成了極大的恐慌计贰,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒂窒,死亡現(xiàn)場離奇詭異躁倒,居然都是意外死亡赎婚,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門樱溉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纬凤,你說我怎么就攤上這事福贞。” “怎么了停士?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵挖帘,是天一觀的道長。 經(jīng)常有香客問我恋技,道長拇舀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任蜻底,我火速辦了婚禮骄崩,結果婚禮上,老公的妹妹穿的比我還像新娘薄辅。我一直安慰自己要拂,他們只是感情好,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布站楚。 她就那樣靜靜地躺著脱惰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窿春。 梳的紋絲不亂的頭發(fā)上拉一,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機與錄音旧乞,去河邊找鬼蔚润。 笑死,一個胖子當著我的面吹牛良蛮,可吹牛的內(nèi)容都是我干的抽碌。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼决瞳,長吁一口氣:“原來是場噩夢啊……” “哼货徙!你這毒婦竟也來了?” 一聲冷哼從身側響起皮胡,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤痴颊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后屡贺,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蠢棱,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡锌杀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了泻仙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糕再。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖玉转,靈堂內(nèi)的尸體忽然破棺而出突想,到底是詐尸還是另有隱情,我是刑警寧澤究抓,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布猾担,位于F島的核電站,受9級特大地震影響刺下,放射性物質發(fā)生泄漏绑嘹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一橘茉、第九天 我趴在偏房一處隱蔽的房頂上張望工腋。 院中可真熱鬧,春花似錦畅卓、人聲如沸夷蚊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惕鼓。三九已至,卻和暖如春唐础,著一層夾襖步出監(jiān)牢的瞬間箱歧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工一膨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留呀邢,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓豹绪,卻偏偏與公主長得像价淌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瞒津,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

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

  • 1.1mybatis下載 mybaits 的代碼由github.com 管理蝉衣,地址:https://github....
    暖熊熊閱讀 857評論 0 5
  • mybatis學習記錄 1.mybatis是什么 ? mybatis是一款優(yōu)秀的持久層框架,它支持定制化sql...
    一笑溫閱讀 282評論 0 0
  • 基礎知識學習 框架:開發(fā)中說的框架巷蚪,通常是一種解決方案病毡,其內(nèi)部封裝了一些細節(jié),使開發(fā)者可以通過很少的時間實現(xiàn)功能屁柏,...
    月明星稀_8184閱讀 404評論 0 0
  • 1啦膜、第一個Mybatis程序 思路:搭建環(huán)境->導入Mybatis->編寫代碼->測試 1.1搭建環(huán)境 搭建數(shù)據(jù)庫...
    Darmonster閱讀 631評論 0 0
  • 1. mybatis的基本概念 MyBatis 是一款優(yōu)秀的持久層框架有送,它支持定制化 SQL、存儲過程以及高級映射...
    Java大寶寶閱讀 321評論 0 0