使用JDBC操作时间的注意点

在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数据库中的对应字段的类型就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值