JAVA 8:RowMapper

时间:2018-08-30 20:04:53

标签: java spring spring-data

我使用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 

当我在GUI上查看查询结果时,就是这样:

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 :(得分:2)

使用a ResultSetExtractor

RowMapper,顾名思义,应该映射到ResultSet的一行行,而Spring负责为返回的每一行分配它。由于要在单个Transit对象中转换结果集的几行,因此应使用ResultSetExtractor