在使用spring+mybatis开发项目时出现了题中的错误:
### Error updating database. Cause: java.lang.IllegalArgumentException: invalid comparison: java.lang.String and java.util.Date
### Cause: java.lang.IllegalArgumentException: invalid comparison: java.lang.String and java.util.Date
原因是
mybatis
在对日期时间类型的参数进行比较时的一个bug. 如果拿传入的时间类型参数与空字符串‘‘进行对比判断则会引发异常. 所以在if判断条件中的代码要去掉与字符串的判断, 只保留非空判断就正常了。
即:
<if test=”createTime != null and createTime !=‘‘ ” >
date(create_time) = date(#{createTime,jdbcType=TIMESTAMP})
</if>
改为
<if test=”createTime != null”>
date(create_time) = date(#{createTime,jdbcType=TIMESTAMP})
</if>
注意:
如果有多个字段都是日期时间类型(Date),需要检查每个字段的判断条件,当前报错的SQL语句才不会报错。