我使用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()的情况下通过我没有收到好的值进行检索
答案 0 :(得分:2)
RowMapper,顾名思义,应该映射到ResultSet的一行行,而Spring负责为返回的每一行分配它。由于要在单个Transit对象中转换结果集的几行,因此应使用ResultSetExtractor
。