JDBC 结果集检索 LocalDateTime

我运行一个简单的查询来从 MySQL 数据库中检索一行。我得到ResultSet并且我需要从中检索一个 LocalDateTime 对象。我的数据库表。


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

}


ABOUTYOU
浏览 271回答 1
1回答

慕运维8079593

尝试将其检索为java.sql.Timestamp,然后转换为LocalDateTime使用Timestamp.toLocalDateTime:LocalDateTime createdDateTime = resultSet.getTimestamp(4).toLocalDateTime()编辑:正如戈德汤普森在他的评论中指出的那样,在使用足够新的 JDBC 驱动程序时有一个更好的解决方案:resultSet.getObject(4, LocalDateTime.class)这将跳过创建冗余java.sql.Timestamp实例。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java