mybatis中動態sql學習

2021-10-01 18:31:44 字數 1777 閱讀 2776

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...