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语句。

posted @ 2019-12-04 11:45  那些年的代码  阅读(2031)  评论(0编辑  收藏  举报