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

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
分享到:
评论

相关推荐

    包含CDATA的 字符串转换成xml

    本文档包含了一个完整的实例,可以实现含有CDATA 的字符串转换成xml

    5、CDATA 和转义字符1

    在XML文档中,为了保证文档的结构正确性和语义...在这个例子中,使用CDATA块包裹比较运算符,防止XML解析器将其解释为元素或实体,确保了SQL查询的正确性。同时,由于SQL查询通常较长,使用CDATA块提高了代码的可读性。

    解析XML特殊字符方法

    除了实体引用,XML还提供了一种特殊的结构——CDATA区(Character Data),用于包含一大段不应被解析的文本。在CDATA区内,解析器会忽略所有特殊字符。例如: ```xml &lt;![CDATA[ 这里可以放不会被解析的文本,包括...

    android SaxParser 解析 CDATA

    在XML中,CDATA段是用来标记一段文本,告诉解析器这段文本不应被解析为XML元素。它的语法是`&lt;![CDATA[ 开始文本 ]]&gt;`。例如,如果你有一个XML字符串包含特殊字符如`或`&gt;`,这些字符在XML中具有特殊含义,如果直接...

    JAVA对象转换成XML(CDATA)

    [CDATA[ 文本内容 ]]&gt;`,其中"文本内容"部分不能包含字符串"]]&gt;",以防止提前结束CDATA段。同时,CDATA段不能嵌套,也就是说,一个CDATA段内部不能再有另一个CDATA段。 要将Java对象转换成XML并包含CDATA,我们可以...

    XML:标签CDATA用法

    这意味着在CDATA段落内的任何XML标签或者实体引用都不会被解析器识别为真正的标签或实体。 ##### 形式与限制 CDATA的基本形式为:`&lt;![CDATA[文本内容]]&gt;`。需要注意的是,CDATA段落内不能包含字符串`]]&gt;`,否则将会...

    区分CDATA和PCDATA

    在这个例子中,“&lt;”和“&gt;”字符在CDATA区段内保持原样,不会被解析器误解为开始或结束标签。这使得可以在XML文档中安全地嵌入代码或其他含有特殊字符的文本。 ### PCDATA PCDATA是Parsed Character Data的缩写,...

    第135讲phpxml编程②cdata实体字符处理指令dtd快速入门编程校验xml.pdf

    在本讲中,我们将深入探讨PHP与XML的结合使用,特别是关于CDATA、实体字符处理以及DTD(Document Type Definition)的快速入门。XML是一种强大的数据交换格式,它允许我们以结构化的方式存储和传输数据。而PHP作为一...

    javascript生成/解析dom的CDATA类型的字段的代码

    2. **使用场景**:通常用于包含大量文本数据,这些数据可能包含了特殊字符,如果不使用CDATA,这些字符会被解析器错误地解释为标记。 3. **语法**:CDATA部分由`&lt;![CDATA[`开始,并以`]]&gt;`结束。 #### 三、生成...

    c#中XML解析文件出错解决方法

    [CDATA[” 标记开始,以”]]&gt;”标记结束,是CDATA内部内容被解析器忽略。具体说明参考《XML CDATA是什么?》。 2.内容中含有低位非打印字符,解析时会报错:””(十六进制值 0x1D)是无效的字符.加载或保存XML时引发...

    asp.net自带类读写xml中的CDATA

    在XML文档中,CDATA(Character Data)区域用于包含不受解析的文本数据,通常用于包含特殊字符或者JavaScript代码。在处理XML时,有时我们需要读取或写入CDATA节中的内容。ASP.NET 3.5及以上版本提供了内置的序列化...

    XML应用开发(软件品牌)-1期 1.4 案例分析-XML文档中使 用字符数据段.doc

    `,这些实体会被解析器处理。 3. 虽然CDATA段能避免解析问题,但并不意味着它可以无限制使用。在某些情况下,更好的解决方案可能是使用XML实体声明或转义特殊字符。 总结来说,XML文档中的字符数据段(CDATA)提供...

    php操作xml入门之cdata区段

    为了防止这些特殊字符被解析器解析,XML定义了CDATA区段(Character Data Sections),用以包含不希望被解析器进行解析的文本数据。 在PHP中操作XML,开发者会经常与CDATA区段打交道。对于需要在XML中包含脚本代码...

    dom4j解析字符串

    dom4j解析字符串 dom4j是Java语言中的一个开源API,用于解析XML文件和字符串。它具有性能优异、功能强大和极端易用使用的特点,只要懂得DOM基本概念,就可以通过dom4j的API文档来解析XML。 dom4j的优点: * 高...

    Mybatis在Mapper.xml文件中的转义字符处理方式.pdf

    为了解决这个问题,Mybatis提供了一些处理转义字符的方式,以确保SQL语句能够正确地写入Mapper.xml文件中并被解析。 在Mapper.xml文件中处理转义字符的常见方法主要有以下几种: 1. 常用的XML转义字符写法 在XML中...

    Mybatis 中的&amp;lt;![CDATA[ ]]&amp;gt;浅析

    [CDATA[ ]]&gt; 来包含特殊字符的 SQL 语句,以防止这些特殊字符被转义。同时,我们也使用 `&lt;if&gt;` 标签来实现动态 SQL 语句的拼接。 &lt;![CDATA[ ]]&gt; 是 Mybatis 中一个非常有用的元素,它可以帮助我们解决特殊字符的...

    XML应用开发(软件品牌)-1期 1.4 课堂实践-XML文档中使用字符数据段.doc

    2. CDATA段内不能包含未闭合的`]]&gt;`序列,因为这会被解析器误认为是CDATA段的结束标志。 3. 尽管CDATA段可以包含大多数特殊字符,但仍然不能包含`&`字符,除非写成`&amp;`的形式。这是因为XML解析器在解析过程中会将...

    ibatis sql语句对条件中特殊字符% # 处理

    其中,单引号(`'`)被替换为两个单引号(`''`),这是为了防止字符串中的单引号与SQL语句中的单引号发生冲突。而斜杠(`/`)、百分号(`%`)以及下划线(`_`)都被加上了转义字符斜杠(`/`)。 ##### 2.2 使用动态SQL标签 ...

    tinyxml2解析和创建xml样例

    CDATA区段用于包含不受解析器解析的纯文本,特别适合包含特殊字符或JavaScript代码。 TinyXML2库提供了几个主要类,如`XMLDocument`、`XMLElement`、`XMLText`和`XMLComment`等,用于操作XML文档。我们先从解析XML...

    页里面 CDATA的作用说明

    CDATA(Character Data)的主要作用是将特殊字符或实体引用包装到CDATA节中,以避免浏览器对这些字符的解析。通常情况下,CDATA节用于Script和Style元素中,以便正确地呈现JavaScript代码和CSS样式规则。 在HTML文...

Global site tag (gtag.js) - Google Analytics