如何选择datetime mysql类型为java.time.LocalDateTime? 创建表`datetimetest`( `id`int(11)不为空, `datetime`datetime非空默认当前时间戳, `timestamp`timestamp NOT NULL默认当前时间戳 )引擎=InnoDB默认字符集=utf8 org.springframework.jdbc.core.jdbc模板jdbc模板; List generic=jdbcTemplate.queryForList(“从mytable中选择*);

如何选择datetime mysql类型为java.time.LocalDateTime? 创建表`datetimetest`( `id`int(11)不为空, `datetime`datetime非空默认当前时间戳, `timestamp`timestamp NOT NULL默认当前时间戳 )引擎=InnoDB默认字符集=utf8 org.springframework.jdbc.core.jdbc模板jdbc模板; List generic=jdbcTemplate.queryForList(“从mytable中选择*);,java,mysql,spring,spring-jdbc,jdbctemplate,Java,Mysql,Spring,Spring Jdbc,Jdbctemplate,问题:默认情况下,datetime和timestamp类型都转换为java.sql.timestamp 问:我如何告诉JdbcTemplate全局地将datetime类型的任何sql列转换为java.time.LocalDateTime(因为它在mysql数据库中没有时区) 旁注:我知道可以显式解析结果集,如: rs.getObject(1,LocalDateTime.class)); 但是我正在寻找全局配置。在执行db调用时,可以使用行映射器的实现()。如果要全局使用,可以创建一个类,该类扩展

问题:默认情况下,
datetime
timestamp
类型都转换为
java.sql.timestamp

问:我如何告诉
JdbcTemplate
全局地将
datetime
类型的任何sql列转换为
java.time.LocalDateTime
(因为它在mysql数据库中没有时区)

旁注:我知道可以显式解析结果集,如:

rs.getObject(1,LocalDateTime.class));


但是我正在寻找全局配置。

在执行db调用时,可以使用
行映射器的实现()。如果要全局使用,可以创建一个类,该类扩展
JdbcTemplate
,并覆盖该类中的
getColumnMapRowMapper
。但这可能需要为所有数据类型定义它


我们公司使用的另一个选项是,我们有自己的helper类,它构建一个查询/行映射器等,该类针对需要DAO的每个类进行扩展,当从传递到
JdbcTemplate
的超类调用所有相关信息位时,可以根据需要进行数据查询,包括
RowMapper
用于该类,因此所有列都是所需的数据类型。

我发现的另一个选项是,您可以创建一个扩展
JdbcUtils
并重写
getResultSetValue
的类,因为这是为查询提取数据类型的方法。尽管每次使用
JdbcTemplate.query时您都可以使用它。我不太清楚当然
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);