Mybatis動態sql set標籤知識

2021-10-04 11:57:23 字數 1601 閱讀 5466

mybatis動態sql中的trim標籤的使用:

select *

from user

"where" prefixoverride=

"and |or"

>

<

if test=

"name != null and name.length()>0"

>

and name=#

>

<

if test=

"gender != null and gender.length()>0"

>

and gender=#

>

<

/trim>

//假如說name和gender的值都不為null的話列印的sql為:

select *

from user where name =

'xx' and gender =

'xx'

屬性的意思如下:

prefix:字首

prefixoverride:去掉第乙個and或者是or

update user

"set" suffixoverride=

"," suffix=

" where id = # "

>

<

if test=

"name != null and name.length()>0"

> name=#

,>

<

if test=

"gender != null and gender.length()>0"

> gender=#

,>

<

/trim>

//假如說name和gender的值都不為null的話列印的sql為:

update user set name=

'xx'

, gender=

'xx' where id=

'x'

屬性的意思如下:

suffixoverride:去掉最後乙個逗號(也可以是其他的標記,就像是上面字首中的and一樣)

suffix:字尾

當 update 語句中沒有使用 if 標籤時,如果有乙個引數為 null,都會導致錯誤。

當在 update 語句中使用if標籤時,如果前面的if沒有執行,則或導致逗號多餘錯誤。使用set標籤可以將動態的配置 set 關鍵字,並剔除追加到條件末尾的任何不相關的逗號。使用 if+set 標籤修改後,如果某項為 null 則不進行更新,而是保持資料庫原值。

update product_image

<

set>

<

if test=

"product_id != null"

>

product_id = #

,>

<

/set

>

where id = #

mybatis動態查詢

當我們需要查詢companylist 對應company表 但是資料又不僅僅只來自company表時,例如 我們還需要area表的省市區名稱時,可以這樣寫 會更優雅點 ps 個人覺得 1.companymodel 企業entity company對應的model 的定義 企業company表對應的m...

mybatis 動態排序

mybatis動態排序目前知道的方式有兩種 1.通過pagehelper com.github.pagehelper pagehelper 版本5.1.4 stringbuffer orderby new stringbuffer 欄位名稱 排序方式 pagehelper.startpage vo....

mybatis動態標籤

動態條件判斷 select from user where 1 1 and username 動態where select from user username 動態遍歷 select from user where id in 其中 標籤 類似於switch,按順序判斷 when 中的條件出否成立...