You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

显式实现ResultSetExtractor接口时如何正确关闭ResultSet

问题解答

1. 是否需要自行关闭ResultSet?

不需要,你当前基于Spring JDBC ResultSetExtractor 接口实现的结果集处理逻辑,无需手动关闭ResultSet。

2. 背后逻辑说明

ResultSetExtractor是Spring JDBC提供的回调接口,其生命周期完全由JdbcTemplate托管:

  • JdbcTemplate在内部完成JDBC查询、拿到ResultSet对象后,才会调用你重写的extractData方法,将ResultSet作为入参传入
  • 无论extractData是正常执行返回结果,还是运行过程中抛出SQLException、数据访问异常,JdbcTemplate都会在finally代码块中统一释放资源:按顺序关闭ResultSet、对应Statement、数据库连接,完全避免资源泄露问题

3. 正确操作方式

你当前的代码已经符合规范,不需要额外加rs.close()相关逻辑,手动关闭反而属于冗余操作,即使JDBC驱动允许重复关闭ResultSet,也没有任何必要。只有当你脱离Spring JDBC封装、自行原生创建JDBC连接/Statement/ResultSet的场景下,才需要手动处理资源释放。


内容的提问来源于stack exchange,提问作者santosh kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 13:36:01