zoukankan      html  css  js  c++  java
  • MyBatis SQL xml处理小于号与大于号

    当我们需要通过xml格式处理sql语句时,经常会用到< ,<=,>,>=等符号,但是很容易引起xml格式的错误,这样会导致后台将xml字符串转换为xml文档时报错,从而导致程序错误。
    【mybatis可以使用】

    <![CDATA[
        SQL代码
    ]]>



    例如:

    <select id="getListByElementName" resultType="java.lang.String">
        <![CDATA[
            select a1.xml_blob as xmlBlob
              from (select t.xml_blob, rownum rn
                      from (select *
                              from aj_i_transmission j
                             order by instr('I,RC,D', j.transactioncode)) t
                     where 1 = 1
                     and t.object_gid is not null
                     and t.transactioncode is not null
                       and t.status = 'E'
                       and t.insert_date < #{date}
                       and t.create_date > sysdate - 3
                       and t.element_name = #{elementName}
                       and rownum <= #{end}
                     ) a1
             where rn > #{start}
              ]]>
       </select>



    这样的问题在iBatiS中或者自定义的xml处理sql的程序中经常需要我们来处理。其实很简单,我们只需作如下替换即可避免上述的错误:


    原符号   <    <=      >       >=       &        '        "
    替换符号&lt; &lt;=  &gt;    &gt;=   &amp;   &apos;  &quot;

     
    错误的xml格式:

    <?xml version="1.0" encoding="GBK"?>  
    <queryForm token="32sdfj-349sfdnfs32-fsdf348imfg323-df34" tableName="HSY_T_CUSTOMER" pageSize="20" pageNo="1" orderColumn="" orderType="">  
      <sqlCondition> AND START_DATE >= to_date('2013-01-01','yyyy-MM-dd') AND START_DATE <= to_date('2013-01-30','yyyy-MM-dd') </sqlCondition>  
    </queryForm>  



    在altova XMLSpy工具中会报错,xml不符合格式要求。

    正确的xml格式:

    <?xml version="1.0" encoding="GBK"?>  
    <queryForm token="32sdfj-349sfdnfs32-fsdf348imfg323-df34" tableName="HSY_T_CUSTOMER" pageSize="20" pageNo="1" orderColumn="" orderType="">  
      <sqlCondition> AND START_DATE &gt;= to_date('2013-01-01','yyyy-MM-dd') AND START_DATE &lt;= to_date('2013-01-30','yyyy-MM-dd') </sqlCondition>  
    </queryForm>  



    在altova XMLSpy工具中验证通过。

    T

  • 相关阅读:
    R语言中获取当前目录
    Error : .onLoad failed in loadNamespace() for 'rJava', details: call: inDL(x, as.logical(local), as.logical(now), ...) error: 无法载入共享目标对象‘D:/Program Files/R/R-3.2.2/library/rJava/libs/x64/rJava.dll
    Ubuntu打开系统监视器
    Myeclipse中js总是报错
    ubuntu 卸载 google-chrome
    ubuntu下安装myeclipse+破解
    bzoj2085-POI2010-Hamsters
    bzoj1061-[Noi2008]志愿者招募-单纯形 & 费用流
    bzoj2716-天使玩偶
    bzoj3779-重组病毒
  • 原文地址:https://www.cnblogs.com/baobeiqi-e/p/10042847.html
Copyright © 2011-2022 走看看