Получить Bean вместо объекта List, используя Jdbctemplate и Rowmapping

Я пытаюсь получить набор результатов и передать его в Bean. Это не работает. Но потом я попытался передать список бобов, и это сработало. Может ли кто-нибудь сказать мне, как я могу напрямую получить объект Bean, используя Jdbctemplate и Rowmapping.

Вот мой код.

String sql = "SELECT * FROM BB.Employeeswhere " +
            "BBEmpPK = ? ";

List<EmployeeDto> deals = (List<EmployeeDto>) getJdbcTemplate().query(
            sql,
            new Object[] {empId},
            new RowMapper<EmployeeDto>() {
                public EmployeeDtomapRow(ResultSet rs, int rowNum) throws SQLException {
                    EmployeeDto d = new EmployeeDto();
                    d.setEmpName(rs.getString(2));                     
                    return d;
                }
            });

В идеале это должно возвращать только одну строку. Любые идеи?

Если есть какое-то другое решение без сопоставителя строк, это будет даже хорошо. Поскольку в таблице у меня более 50 столбцов, было бы сложно создать Bean-компонент с этими полями.


person Yakhoob    schedule 22.10.2017    source источник
comment
Почему вы не можете просто использовать queryForObject(sql, new Object[] {empId}, String.class), если вы получаете значения только из одного столбца rs.getString(2)?   -  person Yoshua Nahar    schedule 22.10.2017
comment
Понял, Йошуа. Пожалуйста, поместите это в ответ. Примет :)   -  person Yakhoob    schedule 22.10.2017


Ответы (1)


Если вам нужна только одна строка и один столбец, просто используйте:
String userName = jdbcTemplate().queryForObject(sql, new Object[] {empId}, String.class);

Если вам нужно более 1 строки и одного столбца, вы можете использовать:
List<String> userNames = jdbcTemplate.queryForList(sql, new Object[] {empId}, String.class);


Боковое примечание: ваша реализация должна была быть такой, если вы хотите, чтобы она работала:

List<EmployeeDto> deals = jdbcTemplate.query(
    sql,
    new Object[] {empId},
    new RowMapper<EmployeeDto>() {
      public EmployeeDto mapRow(ResultSet rs, int rowNum) throws SQLException {
        EmployeeDto d = new EmployeeDto();
        d.setName(rs.getString(2));
        return d;
      }
});
person Yoshua Nahar    schedule 22.10.2017