具有非常大的行集的NamedParameterJdbcTemplate

时间:2013-09-16 06:04:37

标签: java sql jdbc resultset named-parameters

有没有办法从NamedParameterJdbcTemplate返回“普通”结果集而不是行集?行集使用了太多内存。

我正在创建一个查询数据库的应用程序,将结果作为excel文件返回。结果可以高达一百万行,有20列。

我使用NamedParameterJdbcTemplate类来避免使用'?',这真的很整洁。

这是我的代码:

NamedParameterJdbcTemplate jdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
MapSqlParameterSource paramSource = new MapSqlParameterSource();
paramSource.addValue("name", name);
writeExcel(jdbcTemplate.queryForRowSet(pQuery, paramSource), pOutputStream);

但是,queryForRowset会在继续之前将整个行集读入内存。在传统的JDBC中,您只需打开一个结果集并逐行读取,保持连接打开但保存内存。

1 个答案:

答案 0 :(得分:0)

您可以使用jdbcTemplate的方法

public <T> T query(final String sql, final ResultSetExtractor<T> rse)

并传递您自己的ResultSetExtractor