为了账号安全,请及时绑定邮箱和手机立即绑定

JDBC 结果集检索 LocalDateTime

JDBC 结果集检索 LocalDateTime

ABOUTYOU 2021-06-09 17:22:26
我运行一个简单的查询来从 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实例。


查看完整回答
反对 回复 2021-06-23
  • 1 回答
  • 0 关注
  • 267 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信