启动项目报错: Caused by: org.xml.sax.SAXParseException
**重构微服务项目,为了提高开发效率使用mybatis-plus集成开发,今日再写mapper.xml中手写sql时,需要传递时间参数过滤列表数据,然后启动报错:根异常为 Caused by: org.xml.sax.SAXParseException: 元素内容必须由格式正确的字符数据或标记组成。**
然后下面会有一些模糊异常,比如bean注入失败问题。。。
关键报错在于mybatis-plus中,问题出现位置:
网上最早的一篇关于这个问题的解释是出现在2015年,而后都是清一色的一样一样的。。。
解决办法:
第一种: <![CDATA[ 查询字段 ]]>
<select id="findList" resultType="Long">
SELECT count(*)
FROM healthy_daily d
join infisa_text_storage s on s.id = d.text_id
WHERE d.xl_patient_id = #{xlPatientId}
AND d.deleted != 1
<if test="startTime != '' and startTime!=null ">
<![CDATA[ and d.daily_time >= #{startTime} ]]>
</if>
<if test="endTime != '' and endTime!=null ">
<![CDATA[ and d.daily_time <= #{endTime} ]]>
</if>
ORDER BY d.daily_time DESC
</select>
第二种:使用转义字符:
<select id="findList" resultType="Long">
SELECT count(*)
FROM healthy_daily d
join infisa_text_storage s on s.id = d.text_id
WHERE d.xl_patient_id = #{xlPatientId}
AND d.deleted != 1
<if test="startTime != '' and startTime!=null ">
and d.daily_time >= #{startTime}
</if>
<if test="endTime != '' and endTime!=null ">
and d.daily_time <= #{endTime}
</if>
ORDER BY d.daily_time DESC
</select>