mapper裡的動態sql

2021-07-11 04:27:27 字數 2400 閱讀 9125

(1)if

id

="findactiveblogwithtitlelike"

resulttype

="blog"

>

select * from blog

where state = 『active』

test

="title != null"

>

and title like #

(2)

choose, when, otherwise

id

="findactivebloglike"

resulttype

="blog"

>

select * from blog where state = 『active』

test

="title != null"

>

and title like #

test

="author != null and author.name != null"

>

and author_name like #

and featured = 1

(3)

trim, where, set

id

="findactivebloglike"

resulttype

="blog"

>

select * from blog

test

="state != null"

>state = #

test

="title != null"

>and title like #

test

="author != null and author.name != null"

>and author_name like #

where 元素知道只有在乙個以上的if條件有值的情況下才去插入「where」子句。而且,若最後的內容是「and」或「or」開頭的,where 元素也知道如何將他們去除。

如果 where 元素沒有按正常套路出牌,我們還是可以通過自定義 trim 元素來定製我們想要的功能。比如,和 where 元素等價的自定義 trim 元素為:

prefix

="where"

prefixoverrides

="and |or "

>

...

類似的用於動態更新語句的解決方案叫做 set。set 元素可以被用於動態包含需要更新的列,而捨去其他的。比如:

id

="updateauthorifnecessary"

>

update author

test

="username != null"

>username=#,

test

="password != null"

>password=#,

test

="email != null"

>email=#,

test

="bio != null"

>bio=#

where id=#

(4)foreach

動態 sql 的另外乙個常用的必要操作是需要對乙個集合進行遍歷,通常是在構建 in 條件語句的時候。比如:

id

="selectpostin"

resulttype

="domain.blog.post"

>

select *

from post p

where id in

item

="item"

index

="index"

collection

="list"

open

="("

separator

=","

close

=")"

>

#

(5)bind

bind元素可以從 ognl 表示式中建立乙個變數並將其繫結到上下文。比如:

id

="selectblogslike"

resulttype

="blog"

>

name

="pattern"

value

="'%' + _parameter.gettitle() + '%'"

/>

select * from blog

where title like #

Mapper裡的sql語句註解

一 tab user.id,tab user.name,age,address r.id r id,r.name r name,r.userid 這兩個相當於把需要的字段舉例出來,以便後面使用。比如,根據id使用它,相當於貼上裡面的內容資訊一樣。select from tab user left j...

SQL裡動態生成列

一般這種比較複雜一點都用乙個儲存過程來寫比較好。因為單一的檢視不能滿足我們的需求。類似這種,有規律可循的列。如果按照原始的方法 case when then end。我估計是又繁瑣又累,純粹的體力活啊。其實我最開始的時候就是醬寫的 不過好在有大神師傅的指點,簡單多了,而且這個區間值是可以改變的。如下...

Mybatis的Mapper與sql引數傳遞

1.簡單型別 只有乙個引數 select id,role name,note fron t role where id public role getrole interger id 這裡的 的 id 可以是任意值,但一般與傳入的引數形參相同,方便理解 2.傳入引用變數 insert into t ...