从JdbcTemplate中的ResultSet获取DateTime

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())