如何选择datetime mysql类型为java.time.localdatetime?

rkttyhzu  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(814)
CREATE TABLE `datetimetest` (
 `id` int(11) NOT NULL,
 `thedatetime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
 `thetimestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8

org.springframework.jdbc.core.JdbcTemplate jdbcTemplate;
List<Map<String, Object>> generic = jdbcTemplate.queryForList("SELECT * FROM mytable);

问题:两者都有 datetime 以及 timestamp 类型转换为 java.sql.Timestamp 默认情况下。
问题:我怎样才能说出答案 JdbcTemplate 全局转换任何类型的sql列 datetimejava.time.LocalDateTime (因为它在mysql数据库中没有时区)?
旁注:我知道可以显式解析结果集,比如: rs.getObject(1, LocalDateTime.class)); 但我在找一个全局配置。

n53p2ov0

n53p2ov01#

您可以使用 RowMapper 执行数据库调用时(https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/jdbc/core/rowmapper.html). 如果您想全局使用它,可以创建一个扩展 JdbcTemplate 和覆盖 getColumnMapRowMapper 在那个班。尽管这可能需要为所有数据类型定义它。
我们公司使用的另一个选项是,我们有自己的helper类,它构建一个查询/行Map器等,该类为需要dao的每个类扩展,当从传递到的超类调用时 JdbcTemplate 我们需要的所有相关信息位来进行数据查询,包括 RowMapper 因此所有列都是所需的数据类型。

相关问题