java.util.Date和java.sql.Date的区别
1、java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分,一般在读写数据库的时候用,
PreparedStament的setDate()的参数和ResultSet的getDate()方法的都是java.sql.Date
2、java.util.Date是在除了SQL语句的情况下面使用,一般是日常日期字段
3、java.util.Date 是 java.sql.Date 的父类,即:继承关系:java.lang.Object --》 java.util.Date --》
java.sql.Date
场景1
当所使用字段为“yyyy-MM-dd”时,可以直接使用java.sql.Date的时间类,不需要进行配置,只需要在前端往后台传输数据时,时间格式为“yyyy-MM-dd”即可,后台传前台时会默认“yyyy-MM-dd”,即在数据库存放的值。
场景二
当所使用字段为“yyyy-MM-dd HH:mm:ss”时,需要使用java.util.Date的时间类,并且需要对后台接收类的时间格式字段进行配置:
import java.util.Date;
@Date
public class DateInfo {
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date time;
}
如今时间插件或者组件都支持自定义格式的时间选择,但是java.util.Date并不会直接识别前端传参的格式并接收数据,所以往往会导致页面请求时报错,状态码400,参数请求错误。所以还需要对接收类的时间字段配置相应的注解,该注解分为两个方面的,一个是后台接收的格式化注解@DateTimeFormat,一个是后台发送的格式化注解@JsonFormat。
ps:数据库为MySQL数据库,时间字段类型为datetime。