Reputation: 1440
I use RowMapper to map the database tables to java objects
my request looks like the one below
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
When I look at the result of the query on the GUI is like that :
SUM(quantity)
20
4
30
and the implementation of my RowMapper is like :
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();
}
Also I would like to know is there any other method to be able to retrieve without using rs.next() by what I do not receive the good values
Upvotes: 1
Views: 337
Reputation: 692081
Use a ResultSetExtractor.
A RowMapper, as its name indicates, is supposed to map one row of the ResultSet, and Spring is in charge of alling it for each returned row. Since you want to transform several rows of the result set in a single Transit object, you should use a ResultSetExtractor
.
Upvotes: 2