`
Donald_Draper
  • 浏览: 957880 次
社区版块
存档分类
最新评论

mybaitis CDATA 防止字符被解析

阅读更多
在使用mybatis 时我们sql是写在xml 映射文件中,如果写的sql中有一些特殊的字符的话,在解析xml文件的时候会被转义,但我们不希望他被转义,所以我们要使用<![CDATA[ ]]>来解决。
<![CDATA[   ]]> 是什么,这是XML语法。在CDATA内部的所有内容都会被解析器忽略。
如果文本包含了很多的"<"字符 <=和"&"字符——就象程序代码一样,那么最好把他们都放到CDATA部件中。
但是有个问题那就是 <if test="">   </if>   <where>   </where>  <choose>  </choose>  <trim>  </trim> 等这些标签都不会被解析,所以我们只把有特殊字符的语句放在 <![CDATA[   ]]>  尽量缩小 <![CDATA[  ]]> 的范围。

SELECT(
CASE
WHEN oy.AMOUNT IS NULL THEN
    (ny.AMOUNT-0)
WHEN ny.AMOUNT IS NULL THEN
    (0-oy.AMOUNT)
ELSE
   (ny.AMOUNT-oy.AMOUNT)
END) AS AMOUNT,
(
CASE
WHEN oy.AMOUNT IS NULL THEN
    (ny.AMOUNT-0)/ny.AMOUNT
WHEN ny.AMOUNT IS NULL THEN
    (0-oy.AMOUNT)/oy.AMOUNT
ELSE
    "ROUND"((ny.AMOUNT-oy.AMOUNT)/ny.AMOUNT,2)
END) AS rate,
ny.BLEVEL  FROM
(SELECT "SUM"(f.AMOUNT) AS AMOUNT,f.BLEVEL FROM FT_INCOME_REPORT_LOG f
WHERE "SUBSTR"(f.TXN_DATE,1,6)  <![CDATA[ >= ]]>  #{startMonth,jdbcType=VARCHAR} AND "SUBSTR"(f.TXN_DATE,1,6) <![CDATA[ <= ]]> #{endMonth,jdbcType=VARCHAR} GROUP BY f.BLEVEL) ny
LEFT JOIN
(SELECT "SUM"(f.AMOUNT) AS AMOUNT,f.BLEVEL FROM FT_INCOME_REPORT_LOG f
WHERE "SUBSTR"(f.TXN_DATE,1,6) <![CDATA[ >= ]]> #{lastStartMonth,jdbcType=VARCHAR} AND "SUBSTR"(f.TXN_DATE,1,6) <![CDATA[ <= ]]> #{lastEndMonth,jdbcType=VARCHAR} GROUP BY f.BLEVEL) oy
ON ny.BLEVEL=oy.BLEVEL
ORDER BY ny.BLEVEL
0
3
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics