数据库类型与java中类型的对应关系:
DATE->java.sql.Date
TIME->java.sql.Time
TIMESTAMP->java.sql.Timestamp
在写web项目的时候,在除DAO以外的地方是不允许出现java.sql包下的东西,但是往往我们会看到一些情况
- 域对象(domain)中的所有属性不能出现java.sql包下的东西!即不能使用java.sql.Date
- ResultSet#getDate返回的是java.sql.Date()
- PreparedStatement#setDate(int,java.sql.Date),其中第二个参数也是java.sql.Date
那怎么解决这些情况呢?
首先java.sql.Date因为是java.util.Date的子类,所以java.sql.Date转java.util.Date并没有什么问题
java.util.Date date=new java.sql.Date();
那么我们就该想想怎么解决java.util.Date转java.sql.Date,在对于java.sql.Date、Time、Timestamp构造器都存在着对应的有参构造器Date(long time)、Time(long time)、Timestamp(long time)
所以我们可以把util的Date转换成毫秒值
在使用毫秒值创建sql的Date、Time、Timestamp
比如如下所示
java.util.Date date=new java.util.Date();
long l = date.getTime();
java.sql.Date sqlDate=new java.sql.Date(l);