Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String

Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String

数据库字段

数据库中的时间字段是datatime,

Mapper xml文件

Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String

运行结果

Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String

原因

这是因为原因是mybatis 中对于时间参数进行比较时的一个bug. 如果拿传入的时间类型参数与空字符串’'进行对比判断则会引发异常. 所以在上面的代码中去掉空字符串判断, 只保留非空判断就正常了。入锅要对传入的参数进行空字符串校验,可以在server层用代码进行处理。改为如下
Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String