jdbc结果集检索localdatetime

ddhy6vgd  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(349)

这个问题在这里已经有答案了

从结果集获取日期以用于java.time类(3个答案)
两年前关门了。
我运行一个简单的查询,从mysql数据库中检索一行。我明白了 ResultSet 我需要从中检索localdatetime对象。我的db表。

CREATE TABLE `some_entity` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `title` varchar(45) NOT NULL,
  `text` varchar(255) DEFAULT NULL,
  `created_date_time` datetime NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

我需要按id检索某个实体。

String SELECT = "SELECT ID, TITLE, TEXT, CREATED_DATE_TIME FROM some_entity WHERE some_entity.id = ?";
PreparedStatement selectPreparedStatement = connection.prepareStatement(SELECT);
try {
    selectPreparedStatement.setLong(1, id);
    ResultSet resultSet = selectPreparedStatement.executeQuery();
    if (resultSet.next()) {
        Long foundId = resultSet.getLong(1);
        String title = resultSet.getString(2);
        String text = resultSet.getString(3);
        LocalDateTime createdDateTime = null;// How do I retrieve it???
    }
} catch (SQLException e) {
    throw new RuntimeException("Failed to retrieve some entity by id.", e);
}
n9vozmp4

n9vozmp41#

尝试将此检索为 java.sql.Timestamp 然后转换为 LocalDateTime 使用 Timestamp.toLocalDateTime :

LocalDateTime createdDateTime = resultSet.getTimestamp(4).toLocalDateTime()

编辑:正如gord thompson在他的评论中指出的,当使用一个足够新的jdbc驱动程序时,有一个更好的解决方案: resultSet.getObject(4, LocalDateTime.class) 这将跳过创建冗余 java.sql.Timestamp 示例。

相关问题