mybatis if判斷中的特殊符號

2021-09-26 21:58:37 字數 1700 閱讀 1379

在使用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要求的判...