【问题标题】:BeanPropertyRowMapper unable to obtain fields with underscoreBeanPropertyRowMapper 无法获取带下划线的字段
【发布时间】:2021-08-02 14:19:47
【问题描述】:

我有一个包含以下列的表:ca_2008ca_2009 等 当我使用 BeanPropertyRowMapper 获取这些值时,它们只返回 0 而不是 0 当我操纵设置器并将其更改为 setca_2008 而不是 setca2008 时,它起作用了 但问题是,根据文档,它说

这些名称可以直接匹配,也可以通过使用“camel”大小写将用下划线分隔部分的名称转换为相同的名称来匹配。 link

BeanPropertyRowMapper<ClassName> rowMapper = new BeanPropertyRowMapper<>(ClassName.class);
rowMapper.setPrimitivesDefaultedForNullValue(true);
List<ClassName> c = jdbcTemplate.query(sql, rowMapper);

如何在不更改设置器的情况下获得这些值?! 我应该切换到RowMapper 而不是BeanPropertyRowMapper 吗?!

谢谢你

【问题讨论】:

  • 你不能。我怀疑这是因为有数字而不是常规的骆驼案例名称。您可能想要为 BeanPropertyRowMapper 添加改进请求。

标签: spring jdbctemplate


【解决方案1】:

有一个简单的解决方法,在您传递给 jdbcTemplate BeanPropertyRowMapper 的 sql 查询中使用列别名。 例如,如果一个员工表有列 emp_id 并且您的员工 bean 属性是 empId 具有 setEmpId(long empId); 只需将查询写为

从员工中选择emp_id作为empId;

现在 BeanPropertyRowMapper 将简单地将所选列映射到 empId 属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-04
    • 2016-05-05
    • 2020-08-18
    • 2020-12-11
    • 2021-12-05
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多