Boh*_*ohn 6 java datetime jdbc jdbctemplate jodatime
在数据库中,我的列的类型为TIMESTAMP,因此我的类具有类型为Datetime的属性,如下所示:
public void setDiscoveryDate(final DateTime discoveryDtTm) {
this.discoveryDtTm = discoveryDtTm;
}
Run Code Online (Sandbox Code Playgroud)
现在在JdbcTemplate中我想得到它,所以有些代码如下:
variant.setDiscoveryDate(rs.getTimestamp("discovery_dt_tm"));
Run Code Online (Sandbox Code Playgroud)
哪个不起作用,因为列为结果集的get我找不到返回DateTime的东西,我只看到了getDate或getTime.
ska*_*man 14
那是因为DateTime它不是标准的Java类型.如果你指的是JodaTime类型,那么试试这个:
variant.setDiscoveryDate(
new DateTime(rs.getTimestamp("discovery_dt_tm").getTime())
);
Run Code Online (Sandbox Code Playgroud)
如果rs.getTimestamp返回则会中断null,因此您可能希望将其分解为较小的语句并添加检查null.
请注意,这可以更容易,因为DateTime构造函数采用a java.util.Date,它Timestamp是以下的子类:
variant.setDiscoveryDate(
new DateTime(rs.getTimestamp("discovery_dt_tm"))
);
Run Code Online (Sandbox Code Playgroud)
但由于Timestamp课程设计不合理,这也是错误的(请参阅javadoc进行解释).
坚持第一个例子(带getTime())