【问题标题】:NamedParameterJdbcTemplate with very large rowsetsNamedParameterJdbcTemplate 具有非常大的行集
【发布时间】:2013-09-20 04:59:10
【问题描述】:

有没有办法从NamedParameterJdbcTemplate 返回“正常”结果集而不是行集?行集使用的内存过多。

我正在创建一个应用程序来查询数据库,并将结果作为 excel 文件返回。结果最多可达 100 万行,20 列。

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

这是我的代码:

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

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

【问题讨论】:

    标签: java sql jdbc resultset named-parameters


    【解决方案1】:

    你可以使用jdbcTemplate的方法

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

    并传递您自己的ResultSetExtractor

    【讨论】:

      猜你喜欢
      • 2020-03-19
      • 2018-05-03
      • 2017-02-07
      • 2015-09-22
      • 1970-01-01
      • 1970-01-01
      • 2020-08-30
      • 2011-09-16
      • 1970-01-01
      相关资源
      最近更新 更多