Java 如何在使用SpringJDBC模板获取时自动格式化时间戳列?
我使用SpringJDBC从数据库中获取数据,方法如下Java 如何在使用SpringJDBC模板获取时自动格式化时间戳列?,java,mysql,spring,jdbc,Java,Mysql,Spring,Jdbc,我使用SpringJDBC从数据库中获取数据,方法如下 JdbcTemplate jdbc=new JdbcTemplate(ds); List<Map<String,Object>> resultSet=jdbc.queryForList(dsDetailsIN.get("query").toString()); JdbcTemplate jdbc=新的JdbcTemplate(ds); List resultSet=jdbc.queryForList(dsDetai
JdbcTemplate jdbc=new JdbcTemplate(ds);
List<Map<String,Object>> resultSet=jdbc.queryForList(dsDetailsIN.get("query").toString());
JdbcTemplate jdbc=新的JdbcTemplate(ds);
List resultSet=jdbc.queryForList(dsDetailsIN.get(“query”).toString());
其中ds是数据源对象
由于我不知道resultSet列的数据类型,因此带有DATETIME数据类型的列被转换为java日期格式。但是,如果有数据列,我希望自动将其格式化为日期/日期时间/时间戳列的适当格式 考虑使用自定义的代码,而不是简单的
queryForList()
:
JdbcTemplate jdbc=新的JdbcTemplate(ds);
列表结果集=
//使用自定义行映射器
query(dsDetailsIN.get(“query”).toString(),new RowMapper(){
@凌驾
公共映射映射行(ResultSet rs,int rowNum)引发SQLException{
//每行的地图
Map Map=newhashmap();
//目标日期格式
DateFormat nice=新的SimpleDataFormat(“yyyy-MM-dd HH:MM:ss”);
//迭代列。
ResultSetMetaData meta=rs.getMetaData();
对于(int i=1;因此,请测试映射中返回的值是否为日期,并按您希望的方式设置格式。您可以共享用于输出的代码吗?谢谢@Jan,这对我来说很有用。但在一种情况下,如果查询本身包含日期列的格式,则会发生冲突。这是另一种格式,它是您的源代码,因此也是您的查询?因此,您可以从SQL中删除自定义格式?否则,您可能需要为该特定语句或包含某些特定字符串的语句(日期转换函数)调用不同的行映射器
JdbcTemplate jdbc = new JdbcTemplate(ds);
List<Map<String,Object>> resultSet =
//Use a custom RowMapper
jdbc.query(dsDetailsIN.get("query").toString(), new RowMapper<Map<String,Object>>() {
@Override
public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
//The map per row
Map<String,Object> map = new HashMap<String,Object>();
//The target date format
DateFormat nice = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//Iterating the columns.
ResultSetMetaData meta = rs.getMetaData();
for(int i = 1; i <= meta.getColumnCount(); ++i) {
Object o = rs.getObject(i);
//If a date use formatted String instead
if(o instanceof Date) {
o = nice.format(o);
}
//put into map.
map.put(meta.getColumnName(i), o);
}
return map;
}
});