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 文件里  < (小於)號 ,   >(大於)號 ,會被認為是括號。

附上:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM