在乙個複雜得業務邏輯的背景下,比如乙個電商**
在乙個手機表中,可能需要按照品牌,型號,顏色,記憶體等多個屬性對手機表進行查詢,如果對乙個屬性寫乙個查詢方法,那麼**將會非常複雜,所以我們思考:有沒有一種可能只寫一種方法就可以查詢出來業務。那麼他來了-----動態sql
需求:查詢user表的資料。多個條件無腦組合
第一步:定義介面,介面中新增查詢方法
**注意:**定義方法時要考慮返回值與輸入引數
第二步:對映檔案中新增方法實現配置
使用if標籤對條件做出判斷
<
if test=
"id!=null"
>
id=#
>
if(id!=null)
}
上述解決方案中存在where 1=1的無意義sql,使用where標籤解決1=1的問題
注意:if標籤做條件判斷,test屬性中新增判斷新增,多條件時使用and拼接where標籤幫我們解決了1=1問題的同時,還可以幫助我們去掉第乙個and
需求:修改person資訊,傳什麼改什麼
第一步:介面中新增修改方法
第二步:對映檔案中新增實現
**注意:**set標籤可以幫助我們解決最後乙個逗號的問題
**prefix:**字首,在執行trim標籤內語句時,在前面拼接的值(set)
**suffixoverrides:**忽略字尾,在執行trim標籤內語句時,在最後忽略的值(,)
prefixoverrides:忽略字首(and/or)
suffix:字尾(加上where)
第一步:定義介面方法
第二步:對映檔案中新增方法實現
注意:
choose:表示單選,標籤下的條件只選擇乙個執行
choose相當於switch語句
when標籤相當於case語句
otherwise標籤相當於default語句
foreach標籤主要是用來做資料的迴圈遍歷例如:select * from person where id in(4,5,6)在這樣的語句中,需要根據乙個集合或者乙個陣列傳入的引數進行查詢。
第一步:介面中定義方法
使用集合接收傳過來的id串。
第二步:對映檔案中新增方法的實現配置foreach標籤:用於遍歷集合/陣列
collection屬性:代表要遍歷的集合元素,如果遍歷的是集合,屬性值可以是collection,也可以是list
open屬性:代表語句的開始部分(字首)
close屬性:代表結束部分(字尾)
item屬性:代表遍歷集合的每個元素,生成的變數名,取名要做到見名知意。
separator屬性:代表分隔符
第三步:測試**
第一步:介面方法
第二步:對映檔案
注意:使用foreach遍歷 陣列時,collection屬性值為array
第一步:建立乙個查詢物件queryvo(補充查詢條件)
第二步:定義介面方法
第三步:新增對映
注意:
當foreach遍歷的是pojo的集合屬性或者陣列屬性時,collection的屬性值為屬性的名稱
第四步:測試**
第三步:新增對映**
[外鏈轉存中…(img-xukhckcg-1593526500513)]
注意:
當foreach遍歷的是pojo的集合屬性或者陣列屬性時,collection的屬性值為屬性的名稱
第四步:測試**
Mybaits動態sql之sql標籤
使用sql標籤可以重複利用該標籤中的sql語句,需要與include標籤配合使用。舉乙個例子,重複利用id,name,age basesql id name,age sql query resulttype user parametertype user select refid basesql i...
mybatis動態SQL之if標籤
我們根據實體類的不同取值,使用不同的 sql 語句來進行查詢。比如在 id 如果不為空時可以根據 id 查詢,如果 username 不同空時還要加入使用者名稱作為條件。這種情況在我們的多條件組合查詢中經常會碰到。根據使用者資訊,查詢使用者列表 param user return listfindb...
CMFCColorButton的使用以及重繪
cmfccolorbutton是visual studio 2008 sp1版本以上提供的顏色採集器。系統環境 windows 7 程式設計環境 visual studio 2008 sp1 下面介紹下使用步驟 1.新建基於對話方塊的工程,名稱為mycolorbuttondemo 2.拖動乙個按鈕到...