您的位置:首页 > 其它

使用JDBC操作时间的注意点

2015-11-29 20:55 148 查看
在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数据库中的对应字段的类型就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: