1
对于我的大部分查询,我使用query()
方法JdbcTemplate
和RowMapper
,它将在内部完成所有声明和连接。我是否必须关闭JdbcTemplate连接并手动创建语句?
但是在特定情况下,我需要ResultSet
的一些额外的元数据,我只想自己处理Statement
和ResultSet
。
之后我是否必须关闭Statement
或Connection
,以便它将返回到连接池,或者由Spring完成,即使我不使用JdbcTemplate方法?
Connection conn = getJdbcTemplate().getDataSource().getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
/* ... */
ps.close(); // should I do this?
conn.close(); // and this?
如果您自己搞乱了连接,那么您必须关闭它。或者更好地使用“ConnectionCallback”或其他回拨接口之一。为什么你需要手动获取连接?使用'JdbcTemplate'时我还没有发现需要(或敦促)这样做。 –
为了方便地生成一些报告,我只想将整个查询结果转储到一个对象中,该对象由一个包含列名的头数组和一个值为行/列的二维数组组成。我想为不同的语句使用相同的方法,所以我必须从ResultSet中获取标题名称。 –
这正是'ResultSetExtractor'的意义所在。 –