首页 > 技术文章 > invalid comparison: java.util.Date and java.lang.String异常原因

harbin1900 2021-09-03 10:16 原文

### Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:78)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440)
at com.sun.proxy.$Proxy149.insert(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:271)
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:58)
at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:61
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)

 

原因:实体里定义的是Date类型:

 private Date createTime; 

而mybatis.xml文件里判断的时候用主要的方式导致:

<if test="createTime != null and createTime !='' ">#{createTime},</if>

解决方案:修改xml里的判断逻辑,如下:
<if test="createTime != null ">#{createTime},</if>
仅做非Null判断。

补充:Long,BigDecimal等同理, 做字符串判断也就会异常了!

推荐阅读