Mybatis源码分析开篇
Mybatis的由來(lái)
iBatis 本是apache的一個(gè)開(kāi)源項(xiàng)目iBatis, 2010年這個(gè)項(xiàng)目由apache software foundation 遷移到了google code,并且改名為MyBatis 。2013年11月遷移到Github。
iBATIS一詞來(lái)源于“internet”和“abatis”的組合,是一個(gè)基于Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAOs)
mybatis究竟是什么
其實(shí)Mybatis就是封裝了JDBC,讓JDBC的操作更加簡(jiǎn)單,為什么這么說(shuō)呢?我們來(lái)看下面的說(shuō)明:
一次完整的JDBC操作數(shù)據(jù)庫(kù)包括以下步驟:
1、 加載數(shù)據(jù)庫(kù)驅(qū)動(dòng)
2、 創(chuàng)建并獲取數(shù)據(jù)庫(kù)鏈接
3、 創(chuàng)建jdbc statement對(duì)象
4、 設(shè)置sql語(yǔ)句
5、 設(shè)置sql語(yǔ)句中的參數(shù)(使用preparedStatement)
6、 通過(guò)statement執(zhí)行sql并獲取結(jié)果
7、 對(duì)sql執(zhí)行結(jié)果進(jìn)行解析處理
8、 釋放資源
Mybatis封裝后:
1、我們發(fā)現(xiàn)假如每次我們查詢數(shù)據(jù)都要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù)鏈接的話,會(huì)大大消耗我們的資源,因?yàn)榻㈡溄邮且粋€(gè)很耗時(shí)的過(guò)程,所以Mybatis有連接池來(lái)解決這個(gè)問(wèn)題。
2、創(chuàng)建jdbc statement對(duì)象,設(shè)置sql語(yǔ)句 需要在訪問(wèn)之前操作,若是在代碼中以硬編碼的形式來(lái)實(shí)現(xiàn)的話,不利于維護(hù),所以Mybatis有mapper.xml來(lái)統(tǒng)一管理,比較直觀方便。
3、預(yù)編譯情況下,要把占位符的地方替換成參數(shù)傳入,Mybatis自動(dòng)解析傳入的參數(shù)替換mapper.xml中設(shè)置好的占位符。
4、查詢出結(jié)果后,用JDBC把結(jié)果集映射成對(duì)象非常麻煩,所以Mybatis能用resultMap來(lái)把結(jié)果集映射成對(duì)象。
雖然看起來(lái),Mybatis的操作與JDBC完全不一樣,但是在底層的操作確實(shí)JDBC,所以說(shuō),Mybatis是對(duì)JDBC的一次封裝,讓我們開(kāi)發(fā)在對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的時(shí)候更加方便。
假如你沒(méi)用過(guò)JDBC和Mybatis的話,你可能不會(huì)有所共鳴,Mybatis確實(shí)讓程序員在訪問(wèn)數(shù)據(jù)庫(kù)的時(shí)候,少干了不少活,而且我們能很輕松的對(duì)sql語(yǔ)句進(jìn)行維護(hù)。
學(xué)習(xí)源碼必備的技能
接下的篇幅,LZ會(huì)帶各位去學(xué)習(xí)一下Mybatis的源碼,需要一定的基礎(chǔ),個(gè)人覺(jué)得,需要看懂的話必須要先掌握以下技能:
(1)幾個(gè)必要的設(shè)計(jì)模式
1、建造者模式。2、代理模式(重點(diǎn))。3、工廠模式。4、享元模式。……
(2)會(huì)使用Mybatis(后面會(huì)穿插著介紹如何使用),最好有一定的開(kāi)發(fā)經(jīng)驗(yàn)
(3)會(huì)使用JDBC(因?yàn)榈讓邮荍DBC,了解的話,能更好的理解Mybatis到底在干什么)
希望各位看官能在這個(gè)系列學(xué)到一點(diǎn)東西,理解mybatis設(shè)計(jì)的妙處。
總結(jié)
以上是生活随笔為你收集整理的Mybatis源码分析开篇的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 工业用微型计算机(12)-指令系统(7)
- 下一篇: python3精要(64)-Python