在mybatis中,進行資料庫操作時,不僅僅根據單一的標準來進行的增刪改查,有時候,可能需要根據乙個複雜的條件來操作,比如:根據乙個使用者的部分資訊,查詢乙個使用者;根據乙個使用者的id集合,查詢該集合中的所有使用者。這時候,可以使用一些動態的 sql 標籤來輔助運算元據庫,可以更加靈活、方便。
假設乙個使用者類的屬性有 username,id,***,address 四個屬性,我們需要根據其中某些屬性來查詢該使用者的資訊,比如:根據單一的屬性 username,id ,*** ,address,又或者根據組合屬性 username 和 id,username 和 address等等,使得 sql 語句用起來特別不方便,還要書寫多條語句。這時候,if 標籤就可以排上用場了。如:
select * from user where 1=1
新增查詢的條件
and username=#
and id=#
and ***=#
and address=#
select標籤中的屬性:
id:呼叫 sql 語句的函式
parametertype:傳進來的引數型別,上例是 user
resulttype:結果集的返回型別
這裡不作詳細解釋。主要講解 sql 標籤。
if 標籤中的 test 屬性表示判斷,首先判斷傳進來的使用者存不存在 username 屬性,存在則判斷是否匹配,不存在則判斷下乙個屬性,依次類推。
where 標籤可以表示 sql 語句中的 where 的條件限制,將條件限制語句包裹在 where 標籤中,使得**更整潔、易懂。如,上例也可以寫成:
select * from user
username=#
and id=#
and ***=#
address=#
當需要根據乙個使用者的 id 集合來查詢使用者時,foreach 標籤可以遍歷每乙個 id,再根據相應的 sql 語句來查詢。如:
select * from user
#
foreach 標籤中的 collection 屬性表示傳入的集合引數,open 和 close 表示的語句為 「and id in (ids)",and 表示乙個邏輯與的條件判斷,id in (ids) 表示 ids 集合中的每乙個 id。item 表示從 ids 集合中取出來的每乙個元素的名稱為 uid,separator 表示分隔符。
在 sql 的操作中,我們發現有一些 sql 語句經常重複著寫,這時候,可以採用 sql 標籤將該語句包裹成為乙個模板,需要使用時,直接用 include 標籤引入即可。
配置模板:
select * from user
將 select * from user 包裹起來,也可以包裹多條 sql 語句。
使用模板:
注意模板的結尾有沒有分號了。如果有分號,在與其他 sql 語句拼接時,會出現錯誤。在資料庫的使用中,sql 語句沒有分號結尾,並不會影響。
如,上例中採用模板也可以寫成:
#
MyBatis 動態sql標籤
findbyaccount parametertype com.lin.entity.account resulttype com.lin.entity.account select from account test id 0 id if test username null and userna...
MyBatis動態SQL常用標籤 if標籤
在用mybatis之前,我們如果進行條件查詢的話 條件查詢需要判斷從前端獲取的值是否存在來進行操作 是利用 拼接來進行實現的。第一步 在介面中寫出條件查詢的方法 根據姓名和密碼進行查詢 param是mybatis所提供的 org.apache.ibatis.annotations.param 作為d...
MyBatis動態SQL中trim標籤的使用引數
mybatis動態sql中trim標籤的使用 mybatis 官方文件 對 動態sql中使用trim標籤的場景及效果介紹比較少。事實上trim標籤有點類似於replace效果。trim 屬性 prefix 字首覆蓋並增加其內容 suffix 字尾覆蓋並增加其內容 prefixoverrides 字首...