我可以指定 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 作为时间戳等...”
我正在开发一个 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 作为时间戳等...”