我可以指定 JdbcTemplate BeanPropertyRowMapper 将 table 列映射到具有不同名称的 class 字段吗?

Can I specify to JdbcTemplate BeanPropertyRowMapper to map a table column to a class field having a different name?

我正在开发一个 Spring Boot 项目,使用 JdbcTemplate 访问数据,我在使用 [=] 的单个特定字段中遇到以下问题15=] 将查询结果映射到 DTO 对象。

这是执行查询并将查询结果映射到 DTO 对象的存储库方法:

@Override
public OneRowReadTrain1DTO getOneRowReadTrain1DTO() {
    
    String SELECT_SINGLE_RECORD_OneRowReadTrain1 = "SELECT * FROM OneRowReadTrain1";

    List<OneRowReadTrain1DTO> resultList = jdbcTemplate.query(SELECT_SINGLE_RECORD_OneRowReadTrain1, 
                                             BeanPropertyRowMapper.newInstance(OneRowReadTrain1DTO.class));
    
    OneRowReadTrain1DTO result = resultList.get(0);
    
    return result;
}

除特定领域外,它工作正常。问题是这个字段是唯一一个与我的 table.

上的 DTO class 字段和列名称不同的字段

关于我的 OneRowReadTrain1DTO 我有:

public class OneRowReadTrain1DTO {
    
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = JsonFormat.DEFAULT_TIMEZONE)
    private Date timeStamp;
    
    ..........................................................
    ..........................................................
    ..........................................................
}

如您所见,此 class 字段被命名为 timeStamp,但我的 table 上的相关列是 Time_Stamp,因此该字段被定名为 null.

有一种方法可以避免编写自定义行映射器(class fields\table 列有数百个)并指定我的 Time_Stamp 必须映射到 timeStamp?

我知道我可以在 class 中简单地重命名这个字段名称,但它很难看。

您可以 select DTO 所需的每个字段并为其指定字段的正确名称,而不是使用“select *”。

例如:“select Time_Stamp 作为时间戳等...”