有没有办法从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中,您只需打开一个结果集并逐行读取,保持连接打开但保存内存。
答案 0 :(得分:0)
您可以使用jdbcTemplate
的方法
public <T> T query(final String sql, final ResultSetExtractor<T> rse)
并传递您自己的ResultSetExtractor