簡體   English   中英

如何在 jdbcTemplate 中更改日期格式

[英]How to change date format in jdbcTemplate

是否可以更改jdbcTemplate中的日期格式。 例如我有這個代碼:

  List<Map<String, Object>> items = jdbcTemplate.queryForList(sql)

它會重新產生如下結果:

ChangedOn -> {LocalDateTime@13522} "2022-04-21T13:37:52"
CreatedOn -> {LocalDateTime@13524} "2022-04-19T12:24:26

有沒有可能格式化為這個 LocalDateTime:

 public static final String DATETIME_FORMAT = "dd-MM-yyyy HH:mm";

我自己管理,只需要覆蓋 class ColumnMapRowMapper中的一種方法:

public class MyColumnMapRowMapper extends ColumnMapRowMapper {

    public static final String DATETIME_FORMAT = "dd-MM-yyyy HH:mm";

    @Override
    public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
        ResultSetMetaData rsmd = rs.getMetaData();
        int columnCount = rsmd.getColumnCount();
        Map<String, Object> mapOfColumnValues = createColumnMap(columnCount);
        for (int i = 1; i <= columnCount; i++) {
            String column = JdbcUtils.lookupColumnName(rsmd, i);
            Object columnValue = convertDate(getColumnValue(rs, i));

            mapOfColumnValues.putIfAbsent(getColumnKey(column), columnValue);
        }
        return mapOfColumnValues;
    }

    private Object convertDate(final Object columnValue) {
        if (columnValue != null && columnValue
            .getClass()
            .equals(LocalDateTime.class)) {
            return ((LocalDateTime) columnValue).format(DateTimeFormatter.ofPattern(DATETIME_FORMAT));
        } else {
            return columnValue;
        }
    }
}

然后覆蓋 class JdbcTemplate中的另一種方法:

  jdbcTemplate = new JdbcTemplate(dataSource) {
            @Override
            protected RowMapper<Map<String, Object>> getColumnMapRowMapper() {
                return new MyColumnMapRowMapper();
            }
        };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM