1. 程式人生 > >mybatis xml中是sql語句報錯: Error creating document instance. Cause: org.xml.sax.SAXParseException: The

mybatis xml中是sql語句報錯: Error creating document instance. Cause: org.xml.sax.SAXParseException: The

最近專案折騰了老半天,找了資料才知道是這麼回事。。。

因為語句中有一個小於號“<”,在XML中,會被當成一個頁面元素來解析,不會處理為mysql的SQL語句的組成部分,修改如下:

1、在xml的sql語句中,不能直接用大於號、小於號要用轉義字元

如果用小於號會報錯誤如下:

org.apache.ibatis.builder.BuilderException: Error creating document instance.  Cause: org.xml.sax.SAXParseException: The content of elements must consist of well-formed character data or markup.

解決辦法:

1,轉義字元

                     &lt;                                 

                     <

                     小於號                                           

                     &gt;

                     >                                      

                     大於號

                     &amp;

                     &

                     和

                     &apos;

                     ’

                     單引號

                     &quot;

                     "

                     雙引號

例如: state <= 3 則改成  state &lt;= 3

2、使用<![CDATA[]]>標記


注意:<![CDATA[]]>標記的sql語句中的<where> <if>等標籤不會被解析

<![CDATA[
             state <= 3
  ]]>

這樣,將會把SQL語句中與XML頁面元素相同的元素遮蔽,是的XML不將其解析為XML的元素,從而生成正確的SQL語句。