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進行靈活拼接 組裝。現有需求如下 需要查詢使用者,輸入的是使用者類,如果使用者的性別類不為空,則將性別作為查詢條件之一,如果使用者的姓名不為空,則將使用者姓名作為查詢條件之一。如果使用者兩個屬性都為空,則查詢所有使用者。將上...