我运行一个简单的查询来从 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);}
1 回答
慕运维8079593
TA贡献1876条经验 获得超5个赞
尝试将其检索为java.sql.Timestamp
,然后转换为LocalDateTime
使用Timestamp.toLocalDateTime
:
LocalDateTime createdDateTime = resultSet.getTimestamp(4).toLocalDateTime()
编辑:正如戈德汤普森在他的评论中指出的那样,在使用足够新的 JDBC 驱动程序时有一个更好的解决方案:
resultSet.getObject(4, LocalDateTime.class)
这将跳过创建冗余java.sql.Timestamp
实例。
添加回答
举报
0/150
提交
取消