项目场景:
在前端通过时间查询
数据库:mysql
问题描述:
mapper.xml中的查询语句
<if test="investDate !=null and investDate != ''">
AND invest_date LIKE CONCAT('%',#{investDate },'%')
</if>
运行报错:
Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
原因分析:
原因是mybatis 中对于时间参数进行比较时的一个bug.
如果拿传入的时间类型参数与空字符串’'进行对比判断则会引发异常. 所以在上面的代码中去掉空字符串判断, 只保留非空判断就正常了。
改为如下
<if test="investDate !=null">
AND invest_date LIKE CONCAT('%',#{investDate },'%')
</if>