2013-04-23 116 views
2

我有一个包含大约500万条记录的表。我想阅读这张表中的所有记录并对它们做一些处理。 现在我想要批量查询这些记录,比如1000,处理它们并获取下一个1000条记录等等。批量选择记录Spring JDBC模板

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

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

回答

2

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

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

+0

我们如何通过它提高性能?在2天内只有少数缺乏记录处理..我们如何可以加载数百万的数据? – 2015-10-12 09:42:57

2

尝试这样

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

东西这种方式,您可以通过一个

处理任意数量的记录之一
+0

在上面如果我们调用arg0.setString('col_name','value'),那么它会每次调用DB吗? – 2017-06-06 13:07:18