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