JAVA 8: RowMapper - PullRequest
       8

JAVA 8: RowMapper

0 голосов
/ 30 августа 2018

Я использую RowMapper для сопоставления таблиц базы данных с объектами Java

мой запрос выглядит как приведенный ниже

SELECT  SUM(quantity) FROM table1 t1 
WHERE    t1.x = 723834 AND      t1.y = 0  
UNION ALL
  SELECT  SUM(quantity2) FROM table t2 
  WHERE    t2.x = 723834 AND      t2.y > 0  
  UNION ALL
   SELECT  nombre FROM table3 
   WHERE  rownum=1 

Когда я смотрю на результат запроса в графическом интерфейсе, это выглядит так:

SUM(quantity)
20    
4
30

и реализация моего RowMapper выглядит так:

    public Transit mapRow(ResultSet rs, int rowNum) throws SQLException {
        Double ql=rs.getDouble(1);
        rs.next();
        Double qe=rs.getDouble(1);
        rs.next();
        return Transit.builder().qteLivree(ql).qteExpediee(qe)
            .nombreJoursOuvrables(rs.getInt(1))
            .build();
}

Также я хотел бы знать, есть ли какой-либо другой метод, который можно получить без использования rs.next (), с помощью которого я не получаю правильные значения

1 Ответ

0 голосов
/ 31 августа 2018

Использование ResultSetExtractor .

RowMapper, как указывает его имя, должен отображать одну строку ResultSet, и Spring отвечает за его объединение для каждой возвращаемой строки. Поскольку вы хотите преобразовать несколько строк результирующего набора в один объект Transit, вы должны использовать ResultSetExtractor.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...