Mybatis插入时间为null解决方案

今天在开发项目的时候遇到了一个之前没有遇到过的问题,所以在这里记录下。

我们在实际项目开发中,都会遇到类似于这样的操作:需要将一个表中的数据查询出来之后做处理,然后再插入到另外一个表中,这个是再常见不过的了。

那么就会有以下这种问题,上一个表中查询出来的数据为null的时候,mybatis会怎么去将它进行插入呢?

首先,我说明一下我查询出来的是时间类型,而且有可能字段null,然后插入的时候就会出现这个错误“Implicit conversion from data type varbinary to datetime2 is not allowed. Use the CONVERT function to run this query.”。分析一下这个问题,字面意思就是无法将varbinary数据类型隐式转换为datetime2数据类型。

为什么会出现这个问题呢?并且我也将这个值单独拿出来然后写上原原本本的sql语句去数据库执行,没问题的。后面看了各种资料,发现mybatis在处理null这个值的时候,如果不指定明确的数据类型,它是无法知道你这个字段的数据类型。而至于为什么会报上面的错误,可能mybatis会将null默认当成字符串去处理,所以才会出现上述问题。

大概记录一下,因为浪费了我比较多的时间。

解决方案,在插入具体字段的时候,去指定明确的数据类型:

#{item,jdbcType=TIMESTAMP}
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值