0

有没有办法从 a 返回“正常”结果集而不是行集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 中,您只需打开一个结果集并逐行读取,保持连接打开但节省内存。

4

1 回答 1

0

您可以使用jdbcTemplate' 方法

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

并通过你自己的ResultSetExtractor

于 2013-09-16T07:13:32.723 回答