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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值