在使用mybatis 時我們sql是寫在xml 對映檔案中,如果寫的sql中有一些特殊的字元的話,在解析xml檔案的時候會被轉義,但我們不希望他被轉義,所以我們要使用來解決。
是什麼,這是xml語法。在cdata內部的所有內容都會被解析器忽略。
如果文字包含了很多的"<"字元 <=和"&"字元——就象程式**一樣,那麼最好把他們都放到cdata部件中。
但是有個問題那就是
等這些標籤都不會被解析,所以我們只把有特殊字元的語句放在 盡量縮小 的範圍。
例項如下:
<select
id="query"
resulttype
="com.xdt.ibs.environ.device.bean.condition"
>
cdata[[
select id,pid,logicid,`name`,ip_addr as ipaddr,`port`,modbus_addr as modbusaddr,`power`,
`mode`,fan,temp_set as tempset,conn_status as connstatus,update_time as updatetime,create_time as createtime
from `condition`
where id <= #
]]>
<
if test
="ver > 0"
>
and ver >= #
if>
select
>
因為這裡有 ">" "<=" 特殊字元所以要使用 來注釋,但是有標籤,所以把等 放外面
或者使用轉義字元:
<update
id="updatecondition"
parametertype
="com.xdt.ibs.environ.device.bean.condition"
>
update `condition`
set
<
if test
="pid > 0"
>
pid = #,
if>
<
if test
="logicid > 0"
>
logicid = #,
if>
<
if test
="name != null"
>
`name` = #,
if>
<
if test
="power == 0 or power == 1"
>
`power` = #,
if>
<
if test
="fan >= 0 and fan <= 3"
>
fan = #,
if>
<
if test
="connstatus == 1 or connstatus == 2"
>
conn_status = #,
if>
update_time = now()
where id = #
update
>
但是 為什麼 > 可以不用轉義?
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 if標籤的學習 查詢 查詢使用者資訊,三種情況 當只有輸入使用者名稱時,需要根據使用者名稱進行模糊查詢 當只有輸入郵箱時,根據郵箱進行完全匹配 當同時輸入使用者名稱與郵箱時,用這兩個條件去查詢匹配的使用者。if 便簽有乙個必填的屬性test,test的屬性值是乙個符合ognl要求的判...