CHARAFI Saad
CHARAFI Saad

Reputation: 1440

JAVA 8 : RowMapper

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

Answers (1)

JB Nizet
JB Nizet

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

Related Questions