mybatis中傳遞引數的問題:
①在mybatis中如果傳遞的引數是物件,那麼自然可以通過屬性名進行運算元據庫
②如果是傳遞的是string integer等型別,那麼可以通過# # 這種形式進行運算元據庫,但是不能用於動態標籤中
③因此如果在動態標籤中使用,那麼就用 _parameter 代表這個引數,但是僅僅適用於乙個引數的情況(適用於動態標籤中使用)
④若是有多個引數,那麼就要在傳參的時候使用@param()註解標註後使用,例如:
user finduser(@param(「name」)string name);
在sql中就可以使用#
1.使用if元素,這裡為了在拼接的時候,不會多出 and,所以用1=1拼接在where後面。
select * from teacher where 1=1
and tid=#
limit 1
2.if標籤沒有相對應的else標籤,因此應該用choose when otherwise標籤進行替換
select * from teacher where 1=1
and name =#
and tid = #
and age > 28
limit 1
3.trim標籤
prefix 給sql語句拼接的字首
suffix 給sql語句拼接的字尾
prefixoverrides 去除sql語句前面的關鍵字或者字元,該關鍵字或者字元由prefixoverrides屬性指定,假設該屬性指定為"and",當sql語句的開頭為"and",trim標籤將會去除該"and"
suffixoverrides 去除sql語句後面的關鍵字或者字元,該關鍵字或者字元由suffixoverrides屬性指定
select * from teacher
and tid = #
limit 1
4.使用where標籤
select * from teacher
and tid = #
limit 1
5.set標籤
update teacher
name=#
tid =#
6.foreach的使用,可以進行迴圈拼接
collection:可以指定list , array, map( $ = #)
item: 指定元素在迭代時候的別名
separator:指定分割符
open:表示語句以什麼符號開始
close:表示語句以什麼符號結束
select * from teacher where tid in
#insert into users (name, age, county, date)
values
(#, #, #, #)
7.使用bind標籤,適用於拼接字串情況,防止sql注入
select * from teacher where name like #
使用like的時候,拼接要使用concat,這樣避免很多麻煩
select * from teacher where name like concat('%',name ,'%')
mybatis 中動態 sql 標籤的學習
在mybatis中,進行資料庫操作時,不僅僅根據單一的標準來進行的增刪改查,有時候,可能需要根據乙個複雜的條件來操作,比如 根據乙個使用者的部分資訊,查詢乙個使用者 根據乙個使用者的id集合,查詢該集合中的所有使用者。這時候,可以使用一些動態的 sql 標籤來輔助運算元據庫,可以更加靈活 方便。假設...
Mybatis學習筆記 動態SQL
這片文章是對自己學習的總結。在mybatis的crud語句中,可以通過設定一些引數或者標籤,來讓我們寫sql語句時更加便利。sql元素的作用就是可以定義一條sql的一部分,然後以後的sql語句都可以直接引用它來減少 量。最常用的場景就是,我們在乙個dao層介面的配置檔案中進行各種各樣的查詢,但每次查...
mybatis學習之動態sql
1 select查詢 簡單的select類似如下 select id findbyid resultmap studentresult parametertype integer select from t student where id select 1 if 常用於各種查詢的條件判斷部分 se...