Mybatis入門三 動態sql

2022-06-29 04:18:13 字數 2621 閱讀 6803

mybatyis強大的功能之一就是可以方便的使用動態sql,以前使用jdbc來運算元據庫的時候,能感受到那種在根據不同條件進行拼接sql語句帶來的不方便。在mybatis中利用關係標籤就能很方便的解決這一問題。

標籤:if、choose、where、set、trim、foreach

實體類用員工(emp)和部門(dept)

實體類中的屬性名:

emp:empno、ename、job、sal、deptno

dept:deptno、dname

(1)if 標籤:以查詢為例子

select e.*,d.dname from emp e,dept d where d.deptno=e.deptno

and ename=#

0">

and sal=#

(2)choose...when...otherwise標籤:以查詢為例子

select e.*,d.dname from emp e,dept d where e.deptno=d.deptno

and ename=#

and sal=#

1=1

(3)where...if標籤

select * form emp

and ename=#

0">

and sal=#

(4)set...if  標籤:更新語句為例

update emp

ename=#

0">

sal=#

job=#

where empno=#

(5)trim(where\set)標籤(對where標籤和set標籤的補充,功能和where\set標籤一樣)

select * from emp

and ename=#

if>

0">

or sal=#

if>

trim>

select>

update emp

ename=#,

if>

0">

sal=#,

if>

job=#,

if>

hirbate=#,

if>

0">

deptno=#

if>

trim>

where empno=#

update>

(6)foreach標籤:批量操作

標籤中的屬性:collection:集合的型別,list或者array或者map

index:集合的索引

item:集合中元素的名稱

separator:迴圈體的分隔符,向迴圈體中新增的

open:開始內容

close:結束內容

insert into emp(ename,job,hiredate,sal,deptno) values

(#,#,#,#,#)

foreach>

insert>

delete from emp where empno in

#foreach>

delete>

update emp set job=#,sal=# where empno=#;

foreach>

update>

mybatis入門 動態sql

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

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查詢

什麼是動態sql mybatis核心 對sql語句進行靈活操作,通過表示式進行判斷,對sql進行靈活拼接 組裝。需求public class userpo if test userpo.id null and id if if where select id findusercount parame...