从JdbcTemplate中的ResultSet获取DateTime
在数据库中我的列是TIMESTAMP类型,所以我的类具有类型为Datetime的属性,如下所示:
public void setDiscoveryDate(final DateTime discoveryDtTm) { this.discoveryDtTm = discoveryDtTm; }
现在在JdbcTemplate中我想得到它,所以有些代码如下:
variant.setDiscoveryDate(rs.getTimestamp("discovery_dt_tm"));
哪个不起作用,因为列为结果集的get我找不到返回DateTime的东西,我只看到了getDate或getTime。
那是因为DateTime
不是标准的Java类型。 如果你指的是JodaTime类型,那么试试这个:
variant.setDiscoveryDate( new DateTime(rs.getTimestamp("discovery_dt_tm").getTime()) );
如果rs.getTimestamp
返回null
,这将会中断,因此您可能希望将其分解为较小的语句并添加对null
检查。
请注意,这可以更容易,因为DateTime
的构造函数采用java.util.Date
, Timestamp
是以下的子类:
variant.setDiscoveryDate( new DateTime(rs.getTimestamp("discovery_dt_tm")) );
但是由于Timestamp
类的设计不好(参见javadoc的解释),这也是错误的。
坚持第一个例子(使用getTime()
)
试试:
variant.setDiscoveryDate(new DateTime(rs.getTimestamp("discovery_dt_tm").getTime()));