mybatis框架XML一些小問題導致錯誤Caused by: org.xml.sax.SAXParseException: 元素內容必須由格式正確的字符數據或標記組成

背景瞭解:

mybatis框架下SQL查詢一週內數據,由於mybatis對於>=和 <=的不識別,會誤認爲是括號所有導致了以下錯誤
報錯信息:

     <!-- 本週告警 -->
     <select id="getweekalert" resultType="int">
        select IFNULL(SUM(alert_sum),0) as alert_sum from tb_checkresults where
        DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(create_time)
     </select>

    Caused by: org.apache.ibatis.builder.BuilderException: Error creating document instance.  Cause: org.xml.sax.SAXParseException; lineNumber: 77; columnNumber: 43; 元素內容必須由格式正確的字符數據或標記組成。
        at org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:259)
        at org.apache.ibatis.parsing.XPathParser.<init>(XPathParser.java:125)
        at org.apache.ibatis.builder.xml.XMLMapperBuilder.<init>(XMLMapperBuilder.java:78)
        at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:520)
        ... 73 common frames omitted
    Caused by: org.xml.sax.SAXParseException: 元素內容必須由格式正確的字符數據或標記組成。
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
        at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1438)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.startOfMarkup(XMLDocumentFragmentScannerImpl.java:2637)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2735)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
        at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
        at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
        at org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:257)
        ... 76 common frames omitted

 解決辦法:

(1) <![CDATA[帶有>=和 <=的語句括起來]]>

     <!-- 本週告警 -->
     <select id="getweekalert" resultType="int">
        select IFNULL(SUM(alert_sum),0) as alert_sum from tb_checkresults where
        <![CDATA[ DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(create_time)]]>
     </select>

(2)用&lt;代替小於號,用&gt;代替大於號

     
    大於: DATE_SUB(CURDATE(), INTERVAL 7 DAY) &lt;= date(create_time)  
     
                                 
    小於: DATE_SUB(CURDATE(), INTERVAL 7 DAY) &gt;= date(create_time)
     

 

找得到,看得懂,明確報錯信息很重要

解決問題有多種辦法,符合要求的纔是最好的
————————————————
版權聲明:本文爲CSDN博主「鄧商羽」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/DengShangYu_/article/details/93891758

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章