当前位置: 首页 > 知识库问答 >
问题:

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

东方嘉木
2023-03-14

我正在使用Jdbc模板访问数据的Spring Boot项目中工作,并且我在使用Bean

这是我执行查询并将查询结果映射到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;
}

除了一个特定的领域,它工作得很好。问题是这个字段是唯一一个不同于我的表上的DTO类字段和列名的字段。

影响我的OneRowReadTrain1DTO我有:

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

如您所见,此类字段被命名为 timeStamp,但我表上的相关列Time_Stamp因此此字段被评估为 null

有一种方法可以避免编写自定义行映射器(类字段\表列为数百),并指定我的Time_Stamp必须映射到timeStamp

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


共有1个答案

贾飞章
2023-03-14

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

例如:“选择Time_Stamp为时间戳等……”

 类似资料:
  • 问题内容: Jackson json注释中以下jax-b注释的等效方式是什么? 我需要生成json而不是xml,并且需要了解在jax-b中等效表示的常规jackson批注。 重命名字段。 使用getter代替字段。 如果json / xml元素名称是Java保留字(例如“ ”,“ ”,“ ”等),则这些功能尤其重要。 因此我们必须将POJO字段分别命名为“ new ”,“ _ public ”,“

  • ObjectWithList、ListWrapper和ObjectWithWrapper类如下: MyCustomConverter类来包装/展开这些列表。 mapperConfiguration。xml配置文件 不幸的是,映射后,objectWithList的列表字段为null。我使用了调试器,在这种情况下,Dozer甚至没有输入MyCustomConverter。 令人惊讶的是,不同方向的映射

  • 我正在使用TypeORM从Rails迁移到NestJs。由于历史的原因,Rails中的表名和列名都是——我不想把这个讨厌的东西复制到我们的NestJs/React端。 是否可以在NestJS(typeorm)中创建名为但映射到DB中名为的列的实体字段? 我的桌子 我的用户实体类

  • Java类(用作数据传输对象): 类资源还有一个名为的字段,它的getter和setter具有不同的类型,因此出现语法错误。 由于上面的类是一个DTO,一个JSON响应(带有字段)将映射到它,并且不能使用getId(),我想将字段更改为,并相应地更改getter和setter,并用一个注释标记它,说明bind this to字段。 注意:我用的是Spring靴。我尝试使用@JSONProperty

  • 我创建了一个Doctrine2实体,并想在MySQL中映射一个字段到时间戳列。 注释类型为“datetime”时,出现以下错误: 条令\DBAL\Types\ConversionException:无法将数据库值“1390362851”转换为条令类型datetime。预期格式:Y-m-d H:i:s 在63行 /var/www/packer/vendor/doctrine/dbal/lib/Doc

  • 我有两个表:TABLE_A和TABLE_B,它们有一些同名的列。 我想从这两个表中检索所有列,并使用Jooq将查询结果转换为Pojo类,如下所示: 我想使用@Column注释来指定哪个列来自哪个表,但Jooq似乎不支持这个特性。我如何实现这一点? 或者这个,