org.springframework.jdbc.core.JdbcOperations.query(PreparedS



我正在从数据库中选择,我想确保是否需要检查RowSet是否为空。我需要做一个简单的if声明还是可以离开它?

那么这就够了吗?

//RowSet rs = (...)
try {
rs.next()
//process data
} catch (SQLException e) {
}

还是我必须像这样在其中放置一个 if 语句:

//RowSet rs = (...)
try {
if (rs.next()) {
//process data
}
} catch (SQLException e) {
}

即使RowSet是空的还是只是在关闭时,rs.next()也会抛出SQLException吗?提问的另一种方式:行集为空时是否关闭?

虽然这不能回答你的问题...我想问你为什么不使用JdbcTemplate的内置转换/映射功能。Spring 为您抽象了大部分 ResultSet 打开、迭代、关闭操作,以便您可以专注于将数据映射到对象。您可以使用RowMapper的实现,它为您提供了一个mapRow(ResultSet rs, int rowNum)方法,并且可以将每一行映射到一个对象。如果没有行返回,则永远不会执行映射器。每个映射的结果都会进入一个列表,因此如果没有行,那么您的列表将为空。

List<MyType> rowsFromDatabaseMapped = jdbcTemplate.query(SQL_STR, new Object[]{any_params}, new MyTypeMapper());

最新更新