今天在SpringBoot整合MyBatisPlus的时候,使用自动代码生成的功能,对User表生成了entity、mapper、service代码,之后编写测试类调用userService.list(),和userService.save(user)。
发现插入操作,即.save(user)正常。
但是查询所有操作,会报系统异常,错误码500。
原因:
在数据库设计表的时候,datetime类型的字段默认值为"0000-00-00 00:00:00"
这样一来,虽然在mysql中可以正常进行一系列操作
但是在JAVA的实体类中,由于entity中User.java内的属性
@ApiModelProperty(value = "插入时间")
private Date createTime;
@ApiModelProperty(value = "最后一次更新时间")
private Date updateTime;
是Date类型。
Java会把"0000-00-00 00:00:00"当成一个非法值来看待。
解决方法:
1、在数据库连接url后面添上zeroDateTimeBehavior=convertToNull,之后,当遇到"0000-00-00 00:00:00"的日期类型后,它会显示为null,而不会异常了。
2、将日期字段的默认值设为now()。或者在后端代码中设计好插入操作对日期字段插入的默认值。
总之,避免日期为"0000-00-00 00:00:00"即可。