在Mysql数据库中,时间类型有3种
- Time 时:分:秒
- Date 年:月:日
- TimeStamp。年:月:日:时:分:秒
Time
public Time(int hour, int minute, int second) {
super(70, 0, 1, hour, minute, second);
}
Date
public Date(int year, int month, int day) {
super(year, month, day);
}
TimeStamp
@Deprecated
public Timestamp(int year, int month, int date, int hour, int minute, int second, int nano) {
super(year, month, date, hour, minute, second);
if (nano > 999999999 || nano < 0) {
throw new IllegalArgumentException("nanos > 999999999 or < 0");
}
nanos = nano;
}
我们知道,除了Dao层之外我们都是不建议在Bean中java.sql.*;这个包下的所有类。包括上面这三个,即使我们需要操作到时间的时候,也是建议使用java.util.Date这个类的。所以在设计程序持久化时间的时候就会产生一个问题,就是时间类型的转换,转换不好,会导致数据丢失。往往格式转换都是在Dao执行的。
//创建一个java.util.Date的实例对象
Date date =new Date(System.currentTimeMillis());
//格式转换
Timestamp timestamp_sql=new Timestamp(date.getTime());
Time time_sql=new Time(date.getTime());
java.sql.Date date_sql=new java.sql.Date(date.getTime());
Hibernate对日期格式的转换
我们知道,Hibernate极大的方便我们对数据库的访问操作。涉及Bean对象中如果含有java.util.Date对象,而数据库中的保存时间的字段又是
java.sql.Time、java.sql.Date、java.sql.TimeStamp;这三种之一的话。那么我们仅需要在配置文件中配置。
<property name="createDate" type="timestamp" column="createDate"></property>
<property name="createDate" type="time" column="createDate"></property>
<property name="createDate" type="date" column="createDate"></property>
注意到上面的type属性字段了吗。对了我们在写映射文件的时候只需要指定Mysql数据库中的对应字段的类型就可以了。