【收藏】MyBatis 常用語(yǔ)法匯總
695
2025-03-31
Mybatis – SelectKey
屬性 -描述:
① keyProperty : selectKey 語(yǔ)句結(jié)果應(yīng)該被設(shè)置的目標(biāo)屬性。
② resultType:結(jié)果的類(lèi)型。MyBatis 通常可以算出來(lái),但是寫(xiě)上也沒(méi)有問(wèn)題。MyBatis 允許任何簡(jiǎn)單類(lèi)型用作主鍵的類(lèi)型,包括字符串。
③ order: 這可以被設(shè)置為 BEFORE 或 AFTER。如果設(shè)置為 BEFORE,那么它會(huì)首先選擇主鍵,設(shè)置 keyProperty 然后執(zhí)行插入語(yǔ)句。如果設(shè)置為 AFTER,那么先執(zhí)行插入語(yǔ)句,然后是 selectKey 元素-這和如 Oracle 數(shù)據(jù)庫(kù)相似,可以在插入語(yǔ)句中嵌入序列調(diào)用。
④ statementType:和前面的相同,MyBatis 支持 STATEMENT ,PREPARED 和CALLABLE 語(yǔ)句的映射類(lèi)型,分別代表PreparedStatement 和CallableStatement 類(lèi)型。
Mapper文件詳解
可配置標(biāo)簽:
select : 映射查詢(xún)語(yǔ)句
insert: 映射插入語(yǔ)句
update:映射更新語(yǔ)句
delete:映射刪除語(yǔ)句
sql:可被其他語(yǔ)句引用的可重用語(yǔ)句?(與?
resultMap:最復(fù)雜也是最強(qiáng)大的元素,用來(lái)描述如何從結(jié)果集中加載對(duì)象
cache:給命名空間的緩存配置(不用了)
cache-ref:其他命名空間緩存配置的引用(已經(jīng)不用了)
parameterMap:已經(jīng)廢棄,老式風(fēng)格的參數(shù)映射
標(biāo)簽的屬性描述:
1)id:命名空間中唯一的標(biāo)識(shí)符,可以來(lái)引用該條語(yǔ)句?也是接口的方法名稱(chēng)
2)parameterType:這里設(shè)置傳入該條語(yǔ)句的參數(shù)類(lèi)的完全限定名或者普通java類(lèi)型
3)resultType:返回結(jié)果的類(lèi)的完全限定名或者普通java類(lèi)型
4)resultMap:外部resultMap的命名引用,結(jié)果集的映射是Mybatis最強(qiáng)大的特性
5)flushCache:如果設(shè)置為true,則任何時(shí)候該語(yǔ)句被調(diào)用,都會(huì)導(dǎo)致本地緩存和二級(jí)緩存都被清空。默認(rèn)是false
6)useCache:如果設(shè)置為true,將會(huì)導(dǎo)致本條語(yǔ)句的結(jié)果被二級(jí)緩存。默認(rèn)是true
7)timeout:拋出異常之前,驅(qū)動(dòng)程序等待數(shù)據(jù)庫(kù)返回請(qǐng)求結(jié)果的秒數(shù)
Mybatis動(dòng)態(tài)SQL
1:
2:
3:
4:foreach
foreach 也就是遍歷迭代,在SQL中通常用在 in 這個(gè)關(guān)鍵詞的后面
foreach元素的屬性主要有 item,index,collection,open,separator,close。
分別代表:
item表示集合中每一個(gè)元素進(jìn)行迭代時(shí)的別名,
index用于表示在迭代過(guò)程中,每次迭代到的位置,
open表示該語(yǔ)句以什么開(kāi)始,
separator表示在每次進(jìn)行迭代之間以什么符號(hào)作為分隔 符,
close表示以什么結(jié)束
而最為重要的就是collection屬性了,既然是迭代就表示傳入的參數(shù)是多個(gè),這時(shí)候傳入的參數(shù)就有以下幾種可能:
1. list
2. array
3. map
注: collection的值為ids,是傳入的參數(shù)Map的key
TypesAlises
高級(jí)結(jié)果映射
多對(duì)一
注:在查詢(xún)語(yǔ)句中添加主鍵字段(
多對(duì)一
一對(duì)多
多對(duì)多
同類(lèi)技術(shù)對(duì)比
注意事項(xiàng)及小甜點(diǎn)
總結(jié)
1、工作原理:
2、優(yōu)點(diǎn):
1、簡(jiǎn)單易學(xué)
mybatis本身就很小且簡(jiǎn)單。沒(méi)有任何第三方依賴(lài),最簡(jiǎn)單安裝只要兩個(gè)jar文件+配置幾個(gè)sql映射文件易于學(xué)習(xí),易于使用,通過(guò)文檔和源代碼,可以比較完全的掌握它的設(shè)計(jì)思路和實(shí)現(xiàn)。
2、靈活
mybatis不會(huì)對(duì)應(yīng)用程序或者數(shù)據(jù)庫(kù)的現(xiàn)有設(shè)計(jì)強(qiáng)加任何影響。 sql寫(xiě)在xml里,便于統(tǒng)一管理和優(yōu)化。通過(guò)sql基本上可以實(shí)現(xiàn)我們不使用數(shù)據(jù)訪問(wèn)框架可以實(shí)現(xiàn)的所有功能,或許更多。
3、解除sql與程序代碼的耦合
通過(guò)提供DAL層,將業(yè)務(wù)邏輯和數(shù)據(jù)訪問(wèn)邏輯分離,使系統(tǒng)的設(shè)計(jì)更清晰,更易維護(hù),更易單元測(cè)試。sql和代碼的分離,提高了可維護(hù)性。
4、提供映射標(biāo)簽,支持對(duì)象與數(shù)據(jù)庫(kù)的orm字段關(guān)系映射
5、提供對(duì)象關(guān)系映射標(biāo)簽,支持對(duì)象關(guān)系組建維護(hù)
6、提供xml標(biāo)簽,支持編寫(xiě)動(dòng)態(tài)sql。
缺點(diǎn):
1、編寫(xiě)SQL語(yǔ)句時(shí)工作量很大,尤其是字段多、關(guān)聯(lián)表多時(shí),更是如此。
2、SQL語(yǔ)句依賴(lài)于數(shù)據(jù)庫(kù),導(dǎo)致數(shù)據(jù)庫(kù)移植性差,不能更換數(shù)據(jù)庫(kù)。
3、框架還是比較簡(jiǎn)陋,功能尚有缺失,雖然簡(jiǎn)化了數(shù)據(jù)綁定代碼,但是整個(gè)底層數(shù)據(jù)庫(kù)查詢(xún)實(shí)際還是要自己寫(xiě)的,工作量也比較大,而且不太容易適應(yīng)快速數(shù)據(jù)庫(kù)修改。
4、二級(jí)緩存機(jī)制不佳
MyBatis SQL
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。