你是否遇到過:在mybatis 時我們sql是寫在xml 映射文件中,如果寫的sql中有一些特殊的字符的話,在解析xml文件的時候會被轉義,但我們不希望他被轉義,所以我們要使用<![CDATA[ ]]>來解決。
<![CDATA[ ? ]]> 是什么,這是XML語法。在CDATA內部的所有內容都會被解析器忽略。
如果文本包含了很多的"<"字符 <=和"&"字符——就象程序代碼一樣,那么最好把他們都放到CDATA部件中。
但是有個問題那就是 <if test=""> ? </if> ? <where> ? </where> ?<choose> ?</choose> ?<trim> ?</trim> 等這些標簽都不會被解析,所以我們只把有特殊字符的語句放在 <![CDATA[ ? ]]> ?盡量縮小 <![CDATA[ ?]]> 的范圍。
實例如下:
<select id="allUserInfo" parameterType="java.util.HashMap" resultMap="userInfo1">
<![CDATA[
SELECT newsEdit,newsId, newstitle FROM shoppingGuide WHERE 1=1 AND newsday > #{startTime} AND newsday <= #{endTime}
]]>
<if test="etidName!=''">
AND newsEdit=#{etidName}
</if>
</select>
因為這里有 ">" ?"<=" 特殊字符所以要使用 <![CDATA[ ? ]]> 來注釋,但是有<if> 標簽,所以把<if>等 放外面