mybatis 動態SQL語句

2021-08-28 03:17:17 字數 1496 閱讀 8486

一、concat字串拼接

1. sql中字串拼接

select * from tablename where name like concat(concat('%', #), '%');

2. 使用 $ 代替 #

select * from tablename where name like '%$%'; 

${}解析過來的引數值不帶單引號,#{}解析傳過來引數帶單引號。

二、eq相等 ne、neq不相等, gt大於, lt小於 gte、ge大於等於 lte、le 小於等於 not非 mod求模 等

eq                  對應                ==

neq               對應                 !=

gt            對應             >

gte         對應              >=

lt             對應              <(會報錯  相關聯的 "test" 屬性值不能包含 '<' 字元)

lte          對應               <=(會報錯  相關聯的 "test" 屬性值不能包含 '<' 字元)

具體參考該文章:

三、官網:choose, when, otherwise,if,trim, where, set,foreach,bind

四、 不用解析

在使用mybatis 時我們sql是寫在xml 對映檔案中,如果寫的sql中有一些特殊的字元的話,在解析xml檔案的時候會被轉義,但我們不希望他被轉義,所以我們要使用來解決。

是什麼,這是xml語法。在cdata內部的所有內容都會被解析器忽略。

如果文字包含了很多的"<"字元 <=和"&"字元——就象程式**一樣,那麼最好把他們都放到cdata部件中。

但是有個問題那就是

等這些標籤都不會被解析,所以我們只把有特殊字元的語句放在  盡量縮小 的範圍。

例項如下:

# and newsday <= #

]]>

and newsedit=#

因為這裡有 ">"  "<=" 特殊字元所以要使用 來注釋,但是有標籤,所以把等 放外面

五、sql include

mybatis xml 檔案中對於重複出現的sql 片段可以使用標籤提取出來,在使用的地方使用標籤引用即可具體用法如下:

id,name

select

from t

在中可以使用${}傳入引數,如下:

$.id,$.name

select

from t

對於多個xml檔案需要同時引用一段相同的 可以在某個xml 中定義這個 sql **片段,在需要引用的地方使用全稱引用即可,例子如下:

Mybatis動態sql語句

finduserbycondition resultmap usermap select from user test username null and username if test user null and if where select 元素只會在子元素有返回內容的時候才會插入where...

MyBatis動態SQL語句

關鍵字 ifwhere trim foreach set if 如果傳入的p1 不為空,那麼才會sql才拼接id where mybatis的where標籤是對sql語句做了處理,當它遇到and或者or這些,where自己就給處理了。select from test t and username l...

mybatis框架 動態SQL語句)

1.實現動態的sql語句 2.掌握的分頁 3.mybatis的常用的配置。動態sql語句。1.動態sql 在sql語句中加入流程控制。比如加入if,foreach等。重點掌握if語句 案例1 更新 update userinfo set username userpwd useremail user...