微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

xml文件sql中大于号、小于号、等号的转义问题

1.用小于或小于等于的场景

  代码1:

<delete id="delovertimeLog" parameterType="java.lang.Integer">
        delete from operate_log where operate_time < curdate() - interval #{logCleanTime} day
</delete>

  现象:会报解析异常

Caused by: org.apache.ibatis.builder.BuilderException: Error creating document instance.  Cause: org.xml.sax.SAXParseException; lineNumber: 10; columnNumber: 53; 元素内容必须由格式正确的字符数据或标记组成。
    at org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:259) ~[mybatis-3.4.4.jar:3.4.4]
    at org.apache.ibatis.parsing.XPathParser.<init>(XPathParser.java:125) ~[mybatis-3.4.4.jar:3.4.4]
    at org.apache.ibatis.builder.xml.XMLMapperBuilder.<init>(XMLMapperBuilder.java:78) ~[mybatis-3.4.4.jar:3.4.4]
    at org.mybatis.spring.sqlSessionfactorybean.buildsqlSessionFactory(sqlSessionfactorybean.java:520) ~[mybatis-spring-1.3.1.jar:1.3.1]
    ... 54 common frames omitted

  解决方式:

<delete id="delovertimeLog" parameterType="java.lang.Integer">
        delete from operate_log where operate_time &lt; curdate() - interval #{logCleanTime} day
 </delete>

 

  代码2:

<delete id="delovertimeLog" parameterType="java.lang.Integer">
delete from operate_log where operate_time > curdate() - interval #{logCleanTime} day
</delete>

  现象:正常执行,没有错误

 

总结:如果用小于号(<) 或者(<=)就必须转义,其余可以不转义,因为Mapper.xml 文件里  < (小于)号,  >(大于)号,会被认为是括号。

附上:

分享图片

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。