mybaitis CDATA 防止字符被解析

阅读更多
在使用mybatis 时我们sql是写在xml 映射文件中,如果写的sql中有一些特殊的字符的话,在解析xml文件的时候会被转义,但我们不希望他被转义,所以我们要使用来解决。
是什么,这是XML语法。在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)  = ]]>  #{startMonth,jdbcType=VARCHAR} AND "SUBSTR"(f.TXN_DATE,1,6) #{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) = ]]> #{lastStartMonth,jdbcType=VARCHAR} AND "SUBSTR"(f.TXN_DATE,1,6) #{lastEndMonth,jdbcType=VARCHAR} GROUP BY f.BLEVEL) oy
ON ny.BLEVEL=oy.BLEVEL
ORDER BY ny.BLEVEL

你可能感兴趣的:(mybatis)