mybatis-if標籤的學習 查詢
查詢使用者資訊,三種情況:當只有輸入使用者名稱時,需要根據使用者名稱進行模糊查詢;當只有輸入郵箱時,根據郵箱進行完全匹配;當同時輸入使用者名稱與郵箱時,用這兩個條件去查詢匹配的使用者。
<
if>便簽有乙個必填的屬性test,test的屬性值是乙個符合ognl要求的判斷表示式,
表示式的結果可以是true或者false,初次之外所有的的非0值都為true,只有0為false。
且有如下規則:
1.判斷條件property!=
null或者property=
=null:適用於任何型別的字段,用於判斷屬性值是否為空
2.判斷條件property!=
''或者property=
='':僅適用於string型別的字段,用於判斷是否為空字串
3.and和or:當有多個判斷條件時,適用and或or進行連線,巢狀的判斷可以適用小括號分組。
<
!--改進後的**-->
<
select id=
"selectbyuser" resulttype=
"tk.mybatis.******.model.sysuser"
>
select
id,use_name username,
user_password userpassword,
user_email useremail,
user_info userinfo,
head_img headimg,
create_time createtime
from sys_user
where1=
1<
if test=
"username!=null and username!=''"
>
and user_name like concat(
'%',
#,'%')
>
<
if test=
"useremail!=null and useremail!=''"
>
and user_email =
#>
<
/select
>
更新
<
!--需求實現的**-->
<
update id=
"updatebyidselective"
>
update sys_user
set<
if test=
"username!=null and username!=''"
>
user_name=
#,>
<
if test=
"useremail!=null and useremail!=''"
>
user_email=
#,>
<
if test=
"userinfo!=null and userinfo!=''"
>
user_info=
#,>
<
if test=
"headimg!=null"
>
head_img=
#,>
<
if test=
"createtime!=null"
>
create_time=
#,>
where id=
#<
/update
>
<
insert id=
"insert2" usegeneratedkeys=
"true" keyproperty=
"id"
>
insert
into sys_user
(id,user_name,user_password,
<
if test=
"useremail!=null and ueremail!=''"
>
user_email,
>
user_info,head_img,create_time)
values
(#,#,#,
<
if test=
"useremail!=null and ueremail!=''"
>
#,>
#,#,#)
<
/insert
>
Mybatis if標籤判斷大小
1 if標籤語法 sql語句1 條件表示式 sql語句2 if select 注意 條件表示式中大於號小於號用 gt,lt if lt 0 if selectbyupdatedat resultmap resultmapwithblobs select base column list blob c...
mybatis if標籤判斷不生效的解決方法
實際需求 from app sz bbb a from app ccc a 這種情況不生效,原因 mybatis是用ognl表示式來解析的,在ognl的表示式中,0 會被解析成字元,j a是強型別的,char 和 乙個string 會導致不等,所以if標籤中的sql不會被解析。先說怎麼解決 三種 加...
mybatis if判斷中的特殊符號
在使用mybatis 時我們sql是寫在xml 對映檔案中,如果寫的sql中有一些特殊的字元的話,在解析xml檔案的時候會被轉義,但我們不希望他被轉義,所以我們要使用來解決。是什麼,這是xml語法。在cdata內部的所有內容都會被解析器忽略。如果文字包含了很多的 字元 和 字元 就象程式 一樣,那麼...