Java 如何在使用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

我使用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(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;
        }

    });