簡體   English   中英

從 JdbcTemplate 中的 ResultSet 獲取 DateTime

[英]getting DateTime from ResultSet in JdbcTemplate

在數據庫中,我的列是 TIMESTAMP 類型,所以我的 class 具有 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 class 的設計不好(參見javadoc的解釋)。

堅持第一個例子(使用getTime()

嘗試:

variant.setDiscoveryDate(new DateTime(rs.getTimestamp("discovery_dt_tm").getTime()));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM