Mtbatis传入Date格式异常 Error querying database.

今天在写项目的时候,涉及到一个时间格式,由前端传入,格式为yyyy-MM-dd HH-mm-ss ,但是传入的时候服务器报了500,Mapper开发是用的xml进行开发,类型是<update>

看了一下控制台

## Error querying database.  Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String

刚开始是以为前端传入的格式出错,于是自己又进行formaDate一次,发现也不可以,还是报同样的错.

我仔细看了自己的xml,发现在调用<insert>的时候也进行传入Date类型的数据,而且是同一个数据,竟然没有报错,我隐隐约约感觉到是xml在某个地方有些问题.于是我翻看<update>的xml语句

<if test="orderTime!=null  and orderTime!=' ' ">

order_time = #{orderTime}

</if>

发现这里是和<insert>唯一不同的地方,就是加上了动态sql<if>标签,

于是我去了<if>判断,发现莫名奇妙的好了,我想了一下,我们还是需要动态判断非空啊,再仔细思考一下,前端传入的是String类型,去和null对比,应该没什么事情,于是我先加上了

<if test="orderTime!=null ">

    order_time = #{orderTime}

</if>


发现可以用,并没有报错,于是我单独加上

<if test="orderTime!='' ">

    order_time = #{orderTime}

</if>

发现报错了,找到错误原因,就去查了一下,原来是mybatis对于时间参数进行比较时的一个bug.

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,351评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,242评论 19 139
  • 昨晚我试了试“温和而坚定地”拒绝他很多睡前的各种拖沓要求,还好,效果不错。 很特别的是他让我帮...
    瞳小甜Rosie阅读 44评论 0 0
  • 我是谁?我生活在离你不近不远的城市,三小时的动车,四百七十四公里,一百九十九块的距离。虽未常能同进晚餐,逛遍大街小...
    旺喜阅读 184评论 0 1