在用mybatis之前,我們如果進行條件查詢的話(條件查詢需要判斷從前端獲取的值是否存在來進行操作),是利用**拼接來進行實現的。
第一步:在介面中寫出條件查詢的方法
/*
根據姓名和密碼進行查詢
@param是mybatis所提供的(org.apache.ibatis.annotations.param),
作為dao層的註解,作用是用於傳遞引數,從而可以與sql中的的欄位名相對應
*/user getuserbynamepwd
(@param
("name"
) string name,
@param
("pwd"
) string pwd)
;
"getuserbynamepwd"
resultmap
="usermap"
>
select * from user
>
test
="name != null and name != ''"
>
name = #
if>
test
="pwd != null and pwd != ''"
>
and`在這裡插入**片` pwd = #
if>
where
>
select
>
在這裡我們就可以看出if標籤的作用就是判斷,他會判斷test裡的為true或者為false,如果為true則進行,如果為false則不進行操作
@test
public
void
test01()
sqlsession.
close()
;}
結果為:
setting autocommit to false on jdbc connection [com.mysql.jdbc.jdbc4connection@530612ba]
==> preparing: select * from user
==> parameters:
<== columns: id, name, pwd
<== row: 1, 狂神, 123456
<== row: 2, 張三, 123456
<== row: 3, 李四, 123890
<== row: 4, 嘿嘿, 123123
<== row: 5, 德瑪西亞, 666666
<== row: 6, 李莫寒, 121212
<== total: 6
user
user
user
user
user
user
傳乙個值:
@test
public
void
test01()
sqlsession.
close()
;}
結果為:
preparing: select * from user where name = ?
==> parameters: 狂神(string)
<== columns: id, name, pwd
<== row: 1, 狂神, 123456
<== total: 1
user
傳兩個值的話:
@test
public
void
test01()
sqlsession.
close()
;}
結果為:
==> preparing: select * from user where name = ? and pwd = ?
==> parameters: 狂神(string), 123456(string)
<== columns: id, name, pwd
<== row: 1, 狂神, 123456
<== total: 1
user
Mybatis動態插入資料(使用trim標籤)
有時我們控制同一張表,但傳入的引數不固定,操作表的字段不固定,就要用到mybatis動態插入。xml如下 insertmessage parametertype com.sf.ccsp.member.client.request.messagereq insert cx customer messa...
Mybatis動態插入資料(使用trim標籤)
有時我們控制同一張表,但傳入的引數不固定,操作表的字段不固定,就要用到mybatis動態插入。xml如下 insertmessage parametertype com.sf.ccsp.member.client.request.messagereq insert cx customer messa...
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...