h5微信網(wǎng)站建設(shè)百度app手機(jī)版
目錄
1、簡(jiǎn)介
2、if標(biāo)簽
3、foreach標(biāo)簽
4、SQL抽取
?MyBatis系列①:增刪改查
?MyBatis系列②:兩種Dao開發(fā)方式
1、簡(jiǎn)介
開發(fā)中在MyBatis映射文件配置SQL語(yǔ)句,但是前面配置的都是比較簡(jiǎn)單的,不涉及稍復(fù)雜的業(yè)務(wù)場(chǎng)景。想要應(yīng)對(duì)復(fù)雜業(yè)務(wù)場(chǎng)景,則需要引入動(dòng)態(tài)SQL。
MyBatis的動(dòng)態(tài)SQL是一種在SQL語(yǔ)句中根據(jù)不同的條件生成不同的SQL片段的技術(shù)。它使得你能夠根據(jù)不同的情況在SQL語(yǔ)句中動(dòng)態(tài)地添加、修改或排除部分SQL代碼,從而靈活地構(gòu)建數(shù)據(jù)庫(kù)查詢或操作語(yǔ)句。動(dòng)態(tài)SQL在處理不同的查詢條件、排序、分頁(yè)等方面非常有用,能夠有效減少重復(fù)的SQL代碼。
官網(wǎng)截圖如下:
MyBatis 3在此基礎(chǔ)上有了很大的改進(jìn),現(xiàn)在可以使用的元素不到一半。MyBatis使用強(qiáng)大的基于OGNL的表達(dá)式來(lái)消除大多數(shù)其他元素
MyBatis提供了四種標(biāo)簽:
標(biāo)簽 | 介紹 |
<if> | 條件判斷,在SQL語(yǔ)句中動(dòng)態(tài)添加或排除部分代碼。 |
<choose> | 類似于switch語(yǔ)句,根據(jù)條件選擇執(zhí)行不同的代碼塊。 |
<trim> | 修剪SQL中的多余連接詞,用于動(dòng)態(tài)生成WHERE或SET子句。 |
<foreach> | 循環(huán)遍歷集合,常用于生成IN子句等重復(fù)結(jié)構(gòu)。 |
這里重點(diǎn)是if和foreach
2、if標(biāo)簽
我們根據(jù)實(shí)體類的不同取值,使用不同的 SQL語(yǔ)句來(lái)進(jìn)行查詢。
比如在 id如果不為空時(shí)可以根據(jù)id查詢,如果 username 不同空時(shí)還要加入用戶名作為條件。
這種情況在我們的多條件組合查詢中經(jīng)常會(huì)碰到。
使用如下:
這里的<where>標(biāo)簽,會(huì)自動(dòng)識(shí)別是否需要where,比如所有情況都不滿足的時(shí)候,說(shuō)明不需要拼接sql語(yǔ)句,則執(zhí)行的是select * from user,如果去掉<where>,則需要使用如下寫法來(lái)實(shí)現(xiàn)條件查詢的效果:
閱讀起來(lái)沒有使用where標(biāo)簽?zāi)敲疵烙^。
3、foreach標(biāo)簽
foreach標(biāo)簽的屬性含義如下:
<foreach>標(biāo)簽用于遍歷集合,它的屬性:
- collection:代表要遍歷的集合元素,注意編寫時(shí)不要寫#{}
- open:代表語(yǔ)句的開始部分
- close:代表結(jié)束部分
- item:代表遍歷集合的每個(gè)元素,生成的變量名
- sperator:代表分隔符
循環(huán)執(zhí)行sql的拼接操作,例如:SELECT * FROM USER WHERE id IN (1,2,5)。
測(cè)試結(jié)果:
4、SQL抽取
Sql 中可將重復(fù)的 sql 提取出來(lái),使用時(shí)用 include 引用即可,最終達(dá)到 sql 重用的目的。
用法:<sql id="selectUser" select * from User</sql>