JDBC & MySql - datetime类型字段的NULL值处理

当使用Java在操作MySql时,如果你的MySql表中存在datetime类型的字段,相信你有可能会遇到这种情况,0值的datetime字段,显示在MySql里显示为“0000-00-00 00:00:00”,恰恰是这个值,当赋值给实体类对应的属性Timestamp类型时,会提示错误“Cannot convert value '0000-00-00 00:00:00' from column N to TIMESTAMP”。一般这种情况我们更希望数据库驱动能帮我们这个特殊的家伙自动地转为null。

办法是有的,在我们配置数据库连接时的配置属性中,有一项“url”,通常情况下,写为“jdbc:mysql://192.168.137.9:3306/db_new_teaching”,为了解决上述的问题,在这个字符串后面追加一个配置“zeroDateTimeBehavior”,最终写为“jdbc:mysql://192.168.137.9:3306/db_new_teaching?zeroDateTimeBehavior=convertToNull”即可。

zeroDateTimeBehavior有三个值,分别代表不同的处理策略,如下所示。

  • exception:抛出异常,这个是默认值。
  • convertToNull:将日期转换成NULL值。
  • round:替换成最近的日期即0001-01-01。

当然,还有更直接可观的做法,当我们使用Timestamp属性存入数据库之前,最好可以检查并避免0值的插入,自然而然也就不会出现上述的转换异常问题了。

转载于:https://my.oschina.net/angerbaby/blog/398378

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值