一、MyBatis流行的原因
1、容易上手,學(xué)習(xí)門檻低
mybatis它是一個(gè)優(yōu)異的開源持久層框架,mybatis之所以很流行,是因?yàn)閙ybatis很容易上手,開發(fā)速度很快,學(xué)習(xí)門檻很低,想要真正掌握myabatis也很容易,程序員就可以直接編寫原生的sql語句,我們可以自己控制sql語句的執(zhí)行性能。mybatis使用場(chǎng)景是對(duì)關(guān)系數(shù)據(jù)模型要求不高的軟件使用,比如電商網(wǎng)站軟件需要要求變化頻繁,如果需求變化就立馬要求輸出結(jié)果,這是使用mybatis就有好處了。
2、sql優(yōu)化性能好
mybatis在sql優(yōu)化性能方面比Hibernate高得多,Hibernate得查詢回將表中的所有字段都給你查出來,這樣就會(huì)影響性能的消耗,然后mybatis的sql語句程序員可以自己動(dòng)手編寫,可以按需求指定的字段進(jìn)行查詢,當(dāng)然Hibernate也可以自己編寫sql語句來指定查詢所需要的字段,這樣很顯然的不合理,相當(dāng)破壞了Hibernate開發(fā)的簡(jiǎn)潔性,所有mybatis越來越被大廠流行使用的原因。
3、查詢緩存特性強(qiáng)大
mybatis在緩存機(jī)制方面有一個(gè)很強(qiáng)的查詢緩存特性非常的強(qiáng)大,程序員可以非常方便的配置和定制,但是在使用過程中需要注意的是,假如你不能完全確定數(shù)據(jù)更新操作的范圍,就應(yīng)該避免使用Cache,不然的話可能出現(xiàn)系統(tǒng)的運(yùn)行帶來了一個(gè)很大的隱患,當(dāng)然使用過程中注意就可以。
二、Mybatis的功能架構(gòu)
1、API接口層
提供給外部使用的接口API,開發(fā)人員通過這些本地API來操縱數(shù)據(jù)庫。接口層一接收到調(diào)用請(qǐng)求就會(huì)調(diào)用數(shù)據(jù)處理層來完成具體的數(shù)據(jù)處理。接口是MyBatis提供給開發(fā)人員的一套API,通過SqlSession接口和Mapper接口,開發(fā)人員可以通知MyBatis框架調(diào)用哪一條SQL命令以及SQL命令關(guān)聯(lián)參數(shù)。
2、數(shù)據(jù)處理層
負(fù)責(zé)具體的SQL查找、SQL解析、SQL執(zhí)行和執(zhí)行結(jié)果映射處理等。它主要的目的是根據(jù)調(diào)用的請(qǐng)求完成一次數(shù)據(jù)庫操作。
MyBatis框架內(nèi)部的核心實(shí)現(xiàn),來完成對(duì)映射文件的解析與數(shù)據(jù)處理對(duì)Mapper.xml中的參數(shù)進(jìn)行參數(shù)解析與參數(shù)綁定——(ORM)對(duì)Mapper.xml中的SQL語句解析執(zhí)行SQL,調(diào)用底層JDBC進(jìn)行數(shù)據(jù)庫從操作(即支撐層)結(jié)果集映射解析與結(jié)果集映射處理3、基礎(chǔ)支撐層
負(fù)責(zé)最基礎(chǔ)的功能支撐,包括連接管理、事務(wù)管理、配置加載和緩存處理,這些都是共用的東西,將他們抽取出來作為最基礎(chǔ)的組件。為上層的數(shù)據(jù)處理層提供最基礎(chǔ)的支撐。用來完成MyBatis與數(shù)據(jù)庫基本連接方式以及SQL命令與配置文件對(duì)應(yīng),主要負(fù)責(zé):
對(duì) MyBatis 與 數(shù)據(jù)庫連接方式 的管理MyBatis 對(duì)事務(wù)管理方式的統(tǒng)一處理配置文件加載(例如延遲加載)MyBatis查詢緩存的管理延伸閱讀1:MyBatis概念
Mybatis是一個(gè)半ORM(對(duì)象關(guān)系映射)框架,底層封裝了JDBC,是程序員在開發(fā)時(shí)只需要關(guān)注SQL語句本身,不需要花費(fèi)精力去處理加載驅(qū)動(dòng)、創(chuàng)建連接、創(chuàng)建statement等繁雜的過程,使得程序員可以花更多的精力放到業(yè)務(wù)開發(fā)中。