mysql的timestamp类型字段为'0000-00-00 00:00:00'导致mybatis映射时报错解决方法
程序员文章站
2022-04-26 12:07:24
...
Java连接数据库转化为对象时报以下错误信息:
解决办法:连接数据库转化为对象出错的解决办法为在数据库连接后面加上参数zeroDateTimeBehavior=convertToNull,这样如果碰到‘0000-00-00:00:00:00’的日期类型时,将会转化为null值。
jdbc:mysql://10.107.96.170:3306/test?zeroDateTimeBehavior=convertToNull
数据库表中的数据如下所示:
加上zeroDateTimeBehavior=convertToNull后,正常运行如下:
验证的工程在http://bijian1013.iteye.com/blog/2313380基础上修改的,详见附件《MyBatisStudy01.zip》。
PS:mysql的timestamp类型定义时如果不指明为NULL,则默认为not null,产生一个默认值即'0000-00-00 00:00:00',所以上面的问题还有两种解决方案:
1.定义时间类型时给出默认值,例如date not null default '1970-00-00';
2.定义时间类型时默认为null,例如date null。
官网给出timestamp类型默认值default范围是 '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC,在中国,由于时区问题为1970-01-01 08:00:01 to 2038-01-19 11:14:07。
更多解决方法请参考:http://www.cnblogs.com/flyingeagle/articles/6639312.html