【发布时间】:2016-09-23 01:03:18
【问题描述】:
似乎ResultSet 空的标准检查在 Spring 的 JDBC ResultSetExtractor 中不起作用。我以以下方式使用它:
return jdbcTemplate.query(sql, ps -> {
ps.setLong(1, fooParam1);
ps.setLong(2, fooParam2);
}, rs -> {
return rs.getLong(1);
});
那么在这种模式下检查ResultSet空虚的正确方法是什么?
【问题讨论】:
-
为什么不使用 rs.hasNext()?
-
@RadhakrishnaSharmaGorenta
ResultSet类中没有这种方法 -
当然,您的第一个参数
sql可能是一个PreparedStatementCreator实现,它已经调用了next(),但是当您使用与API而不在您的问题中发布代码。您可以使用返回List的query重载之一尝试您的设置。第一行是包含还是缺失?正如已经证明的那样,Springs 拥有ResultSetExtractor实现 do 调用next()。 -
您的措辞表明
ResultSet的“合成”性质有所不同。那将是一个非常危险的设置。正如已经多次强调的那样,Springs ownResultSetExtractorimplementations 将调用next(),如果你设法获得了一个不能正常工作的环境,你应该重新考虑这一点。您的解决方案可能适用于该设置,但这对其他用户没有帮助。