java如何处理从ResultSet返回0、1或2行的情况
我有一个ResultSet resultSet
可以从执行的查询中潜在地返回0、1或2行
Map<String, Integer> results = new HashMap<>();
if (!resultSet.next()){
// handle case where there are no rows
results.put("count1", 0)
results.put("count2", 0)
}
else {
resultSet.beforeFirst();
while (resultSet.next()) {
// handle case where there are 1 or 2 rows
results.put(resultSet.getInt("column1") == 0 ? "count1" : "count2", resultSet.getInt("column2"));
}
}
当没有行或1行时,我得到这个异常org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
。if条件不应该处理无行,else条件不应该也处理1行。我的else状态可以处理2行
# 1 楼答案
问题在于我是如何从另一个类调用查询的。我使用了
QueryExecutor
方法queryForObject
,该方法期望返回一个结果,因此当我的查询执行且没有返回行时,EmptyResultDataAccessException
被抛出。当我将方法更改为query
时,然后:没有问题,因为如果没有行,while循环将不会执行