5

我有一张大约有 500 万条记录的表。我想从这个表中读取所有记录并对它们进行一些处理。现在我想批量查询这些记录,一次说 1000 条,处理它们并获取下 1000 条记录,依此类推。

但是 JDBCTemplate.query 方法只返回包含表中所有记录的 List。显然我不能在内存中有 500 万条记录。

有没有办法使用 Spring JDBC 解决我的问题?如果有帮助,底层数据库将是 DB2。

4

2 回答 2

2

尝试这样的事情

    jdbcTemplate.query(sql, new RowCallbackHandler() {
        public void processRow(ResultSet arg0) throws SQLException {
            // ...
        }
    });

这样您就可以一一处理任意数量的记录

于 2013-04-23T10:43:01.517 回答
2

阅读JdbcTemplate 的 javadoc。还有很多其他方法,也称为query(),它们不返回列表,而是将 aRowCallbackHandler或 aResultSetExtractor作为参数。使用这些。

要设置结果集一次获取的行数,覆盖applyStatementSettings()并调用Statement.setFetchSize()

于 2013-04-23T09:07:08.223 回答