【明哥报错簿】之 mybatis异常invalid comparison: java.util.Date and java.lang.String

背景:数据库为postgresql,表字段属性为timestamp格式

原因是mybatis 3.3.0中对于时间参数进行比较时的一个bug. 如果拿传入的时间类型参数与空字符串''进行对比判断则会引发异常. 所以在上面的代码中去该该判断, 只保留非空判断就正常了

【明哥报错簿】之 mybatis异常invalid comparison: java.util.Date and java.lang.String_第1张图片

--------------------------------------------之前的mapper里面进行了非null和非空验证,要去掉非空验证!

前台jsp传入后台的时间为string,在service里将string转为timestamp,

【明哥报错簿】之 mybatis异常invalid comparison: java.util.Date and java.lang.String_第2张图片

----------------------------------------------------------------------------------------------------------------------------------------------------------------

在mapper里面提取可以用date或者timestamp——#{date,jdbcType=DATE/TIMESTAMP}

查询出的数据在resultMap里进行映射,可以用string的VARCHAR映射

【明哥报错簿】之 mybatis异常invalid comparison: java.util.Date and java.lang.String_第3张图片

----------------------------------------------------------------------------------------------------------------------------------

实体类也用string定义时间

【明哥报错簿】之 mybatis异常invalid comparison: java.util.Date and java.lang.String_第4张图片
【明哥报错簿】之 mybatis异常invalid comparison: java.util.Date and java.lang.String_第5张图片
 
----------返回前台的string进行格式化显示----------------
 
---------------------------------------------
 
 插入时:
【明哥报错簿】之 mybatis异常invalid comparison: java.util.Date and java.lang.String_第6张图片
【明哥报错簿】之 mybatis异常invalid comparison: java.util.Date and java.lang.String_第7张图片
【明哥报错簿】之 mybatis异常invalid comparison: java.util.Date and java.lang.String_第8张图片
 
service里面:
 
【明哥报错簿】之 mybatis异常invalid comparison: java.util.Date and java.lang.String_第9张图片
 
在model实体类里面deliverdate和insdate可以定义为string或者Date,这个不重要,根据jsp的回显需要选择,主要的是在service进行map的put时,要转换为timestamp格式,因为数据库postgresql里面的是表字段是timestamp格式

转载于:https://www.cnblogs.com/dflmg/p/6641168.html

你可能感兴趣的:(【明哥报错簿】之 mybatis异常invalid comparison: java.util.Date and java.lang.String)