MyBatis知識點複習 08動態SQL

2021-10-07 05:19:32 字數 2437 閱讀 5141

本節為大家講解動態sql,所謂動態sql就是可以動態變化sql語句。

public list

findbyuser

(user user)

;

現在假設我們要求該函式實現這樣的功能:

如果傳入的引數user的username不叫李成且不為空就按照user的屬性返回

否則返回所有

"findbyuser" parametertype=

"user" resulttype=

"user"

>

select * from user

<

if test=

"username !=null and username!='李成'"

>

name = #

>

<

/where>

<

/select>

下面我們來解析一下上面的內容:

標籤相當於在 select * from user語句後面加上了where語句,但是如果最後if判斷後標籤裡面沒有了sql語句會自動的把where去掉,同時標籤還擁有靈活去掉and語句的功能(上面這個例子沒有體現),將下來是標籤裡面的test屬性值,這裡的username應該是引數user的屬性名,如果沒有這個屬性會報錯(如果傳遞的引數的有成員物件a,可以用a.a的屬性名來獲取a的屬性值,上面的例子也沒有體現這一點)。

最後需要說明的是如果要判斷引數user是否為空貌似mybatis無法實現(反正我不知道,不知道是否可以實現),同時不可以在使用與後而導致其標籤體內容為空,這樣會報錯前面的、、也同理

注意點:在使用標籤時要注意判斷:如果是物件要看是不是null,如果是字串要判斷是不是null和『』

利用sql片斷我們可以把上一小節的內容等效改為下面這樣:

<

!--宣告sql片斷--

>

"select_by_user"

>

name = #

<

/sql>

"findbyuser" parametertype=

"user" resulttype=

"user"

>

select * from user

<

if test=

"username !=null and username!='李成'"

>

<

!--引入sql片斷--

>

"select_by_user"

>

<

/include>

>

<

/where>

<

/select>

具體語法看上面的就懂了,我就不細講了

public list

findbyids

(userqueryvo vo)

;

在userqueryvo類新增下面屬性:

list

ids;

"findbyids"

parametertype

="vo"

resulttype

="user"

>

select * from user

>

test

="ids != null and ids.size > 0"

>

collection

="ids"

item

="id"

open

="id in("

close

=")"

separator

=","

>

$foreach

>

if>

where

>

select

>

上面注釋已經介紹了含義這裡就不解釋了。

test方法內容:

class);

userqueryvo vo =

newuserqueryvo()

; list

list =

newarraylist

()};

vo.setids

(list)

; list

findbyids

(vo)

; system.out.

println

(byids)

; sqlsession.

commit()

;//提交事務,否則會事務回滾

複習知識點

題目 class aclass bextends aclass cextends aclass dextends ba obj newd system.out.println obj instanceofb system.out.println obj instanceofc system.out....

知識點複習

scanf d用於輸入十進位制數 u無符號十進位制輸入 o用於輸入8進製數 c用於輸入單個字元 s用於輸入字串 非空格開始,空格結束,字串變數以 0 結尾 f,lf用於輸入實數,一般使用double,lf 表示對應的輸入量不賦給乙個變數 d printf d帶符號十進位制輸出 u無符號十進位制輸出 ...

mybatis知識點總結

1 resultmap resulttype parametertype parametermap的區別 2 的區別 1 將傳入的資料都當成是乙個字串,會自動對傳入的資料加上乙個雙引號 2 是乙個替換的功能 3 方式可以很大程度上防止sql注入 4 一般用於傳入資料庫物件,例如傳入表名 5 myba...