mybatis動態插入sql語句

2021-08-13 17:21:13 字數 3397 閱讀 8417

if標籤就類似於jstl的if標籤

在執行多條件選擇時,可能會多出乙個and 關鍵字。譬如:

 

select last_name,email,id,gender from employee

where

id=#

if>

and last_name like

#if>

and gender=#

if>

and email=#

if>

select>

那麼,當id=null時候,拼接的語句就會多出來乙個and。

where標籤可以刪除多餘的字首and /or,然後加上where

將動態語句嵌入where標籤中即可

id=#

if>

or last_name like

#if>

and gender=#

if>

and email=#

if>

where>

和where用法差不多,在執行更新語句時,可能會多餘乙個逗號。

用於替代set關鍵字,用法如下

last_name=#,

if>

email=#,

if>

gender=#

if>

set>

prefix="set"

suffixoverrides=",">

trim>

在語句前插入prefix指明的字首,suffixoverrides 是對末尾指明的多餘的符號清除。

可以用來代替set標籤和where標籤

prefix="where"

prefixoverrides="and">

trim>

id="updateemp"  >

update employee

test="lastname!=null">

last_name=#,

when>

test="email!=null">

email=#,

when>

test="gender!=null">

gender=#,

when>

gender=1

otherwise>

choose>

set>

where id=#

update>

類似於elseif 或者switch case語句

一旦乙個匹配上,其餘的便不再執行。

collection 指定要遍歷的集合,list型別的引數會特殊處理封裝在map中,key就叫list

item 將當前遍歷出的元素賦值給指定的變數

separator 每個元素之間的分隔符

open 在遍歷出所有的結果之後拼接乙個開始的字串

close 遍歷出所有的結果後拼接乙個結束的字元

index 索引 遍歷list 的時候是索引,遍歷map的時候是map的key,item即為當前項的值。

用來批量查詢

查詢語句:select * from employee where id in (1,2,3);

select * from employee where id in

#foreach>

select>

用來批量插入

第一種,利用values

第二種,同一行執行多條sql插入語句。需要在連線引數上進行配置。

jdbc.url=jdbc:

mysql://localhost:3306/mybatis?allowmultiqueries=true&&useunicode=true&&characterencoding=utf8

第一種:"batchinsert" >

insert into employee (last_name,email,gender)values

(#,#,#)

foreach>

第二種

"batchinsert2" >

insert into employee (last_name,email,gender)values

(#,#,#)

foreach>

在begin 和 end 間寫入多條插入語句

利用中間表

sql語句

begin

insert

into employee (last_name,email,gender)

values ("hou","[email protected]",1);

insert

into employee (last_name,email,gender)

values ("hou","[email protected]",1);

end;

foreach**

"batchinsert2" >

insert into employee (id,last_name,email,gender)values

(employee_seq.nextval,#,#,#)

foreach>

insert

into employee (id,last_name,gender,email)

select employeeseq.nextval,last_name,gender,email from(

select

"[email protected]" email,"hou" last_name,0 gender from dual union

select

"[email protected]" email,"hou" last_name,0 gender from dual

)

foreach語句

"batchinsert2" >

insert into employee (id,last_name,gender,email)

select employee_seq.nextval,last_name,gender,email from(

select

# last_name,# email,# gender

foreach>

Mybatis 模糊查詢 動態sql 插入回填

方式一 用 selectuser parametertype com.gec.bean.user resulttype com.gec.bean.user select from t user where address like select 方式二 用 value 然後傳入引數時加入 selec...

mybatis 動態sql詳解

內容 轉到原網頁insert into t blog title,content,owner values select from t blog where id update t blog set title content owner where id select from t blog se...

mybatis入門 動態sql

mybatis核心就是對sql語句進行靈活操作,通過表示式進行判斷,對sql進行靈活拼接 組裝。現有需求如下 需要查詢使用者,輸入的是使用者類,如果使用者的性別類不為空,則將性別作為查詢條件之一,如果使用者的姓名不為空,則將使用者姓名作為查詢條件之一。如果使用者兩個屬性都為空,則查詢所有使用者。將上...