问题: 如何处理 java.time 类型类似于通过 JDBC 使用 SQL 数据库的 LocalDate,例如 H2?
Legacy方法: 使用PreparedStatement::setDate 和ResultSet::getDate 适用于过时的java.sql.Date 类型。但是,最好避免这些有问题的遗留类。
现代方法: 主要有两条路线:
使用 JDBC 4.2 兼容驱动程序的示例:
// Insert LocalDate as SQL DATE preparedStatement.setObject(1, myLocalDate); // Retrieve LocalDate from SQL DATE LocalDate localDate = myResultSet.getObject("my_date_column", LocalDate.class);
使用非兼容驱动程序示例:
// Convert LocalDate to java.sql.Date for insertion java.sql.Date mySqlDate = java.sql.Date.valueOf(myLocalDate); preparedStatement.setDate(1, mySqlDate); // Convert java.sql.Date to LocalDate after retrieval LocalDate localDate = mySqlDate.toLocalDate();
建议: 尽可能使用符合 JDBC 4.2 的方法。它更简单并且类型安全。但是,不兼容的方法仍然可以用于不支持 JDBC 4.2 的驱动程序。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3