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 一个列表,每行一个)。
我可以得到 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 一个列表,每行一个)。