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列 datetime
至 java.time.LocalDateTime
(因为它在mysql数据库中没有时区)?
旁注:我知道可以显式解析结果集,比如: rs.getObject(1, LocalDateTime.class));
但我在找一个全局配置。
1条答案
按热度按时间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
因此所有列都是所需的数据类型。