2013-04-23 50 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