Spring - jdbcTemplate 无法获取 Pair 对象

Spring - jdbcTemplate failed to get Pair object

我可以得到 Pair 作为 jdbcTemplate 的输出吗?我尝试了以下方法(适用于单独的整数)

Pair<Integer, Integer> result = jdbcTemplate.queryForObject(GET_PAIR, new Object[]{}, Pair.class);

但它 returns 异常

org.springframework.jdbc.IncorrectResultSetColumnCountException: Incorrect column count: expected 1, actual 2
    at org.springframework.jdbc.core.SingleColumnRowMapper.mapRow(SingleColumnRowMapper.java:92)
    at org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:93)
    at org.springframework.jdbc.core.RowMapperResultSetExtractor.extractData(RowMapperResultSetExtractor.java:60)
    at org.springframework.jdbc.core.JdbcTemplate.doInPreparedStatement(JdbcTemplate.java:703)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:639)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:690)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:722)
    at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:732)
    at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:800)

尝试过 org.apache.commons.lang3.tuple.Pair

queryForObject 要求一个结果,而且只需要一个结果。所以当你得到 EmptyResultDataAccessException 时,这意味着对 Object 的查询没有找到任何东西。

但是我仍然不认为它会起作用,即使你得到了结果。更好的方法是使用 RowMapper

jdbcTemplate.query(GET_PAIR, (rs, i) -> new Pair(rs.getInt(1), rs.getInt(2)))

这将允许您将元素映射到一对(这将 return 一个列表,每行一个)。