分批选择记录Spring JDBCTemplate

时间:2013-04-23 08:59:26

标签: java spring jdbc db2

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

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

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

2 个答案:

答案 0 :(得分:2)

阅读javadoc of JdbcTemplate。还有许多其他方法,也称为query(),它们不返回列表,并以RowCallbackHandlerResultSetExtractor为参数。使用这些。

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

答案 1 :(得分:2)

尝试这样的事情

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

这样你可以逐个处理任意数量的记录