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,轉義字元
< |
< |
小於號 |
> |
> |
大於號 |
& |
& |
和 |
' |
’ |
單引號 |
" |
" |
雙引號 |
例如: state <= 3 則改成 state <= 3
2、使用<![CDATA[]]>標記
注意:<![CDATA[]]>標記的sql語句中的<where> <if>等標籤不會被解析
<![CDATA[
state <= 3
]]>
這樣,將會把SQL語句中與XML頁面元素相同的元素遮蔽,是的XML不將其解析為XML的元素,從而生成正確的SQL語句。