摘要: mybatis的XML文件中若直接使用>、<、&等符号时会报错,因此需要其他解决方法,如转义字符或<![CDATA[ ]]>
如果在执行sql时发生如下异常信息,请检查Mybatis 的的sql语法是不是没有转义
Error creating document instance. Cause: org.xml.sax.SAXParseException;
原来是SQL语句中用了大于小于符号:
==================================================================================================
<select id="notUses" resultType="com.yiqing.yslf.coupon.pojo.CustomerCoupon"> SELECT a.*, a.coupon_id AS "coupon.id", <include refid="coupon" /> FROM customer_coupon a <include refid="couponJoins" /> WHERE owner_id = #{ownerId} AND status = '0' AND datediff(now(),end_date) <= 0 </select>
==================================================================================================
用转义符替换后正常运行:
==================================================================================================
<select id="notUses" resultType="com.yiqing.yslf.coupon.pojo.CustomerCoupon"> SELECT a.*, a.coupon_id AS "coupon.id", <include refid="coupon" /> FROM customer_coupon a <include refid="couponJoins" /> WHERE owner_id = #{ownerId} AND status = '0' AND datediff(now(),end_date) <= 0 </select>==================================================================================================
转义符
< < 小于号
> > 大于号
& & 和
' ’ 单引号
" " 双引号<![CDATA[ ]]>
还有种解决方案,使用<![CDATA[ ]]>符号进行说明,里面的内容将不进行解析
<![CDATA[ AND INSTR(type,#{type,jdbcType=VARCHAR}) > 0 ]]>