我有一张约有500万条记录的表格。我想从这个表中读取所有记录并对它们进行一些处理。 现在我想分批查询这些记录,一次写1000个,处理它们并获取下一个1000条记录,依此类推。
但是,JDBCTemplate.query方法仅返回包含表中所有记录的List。显然我内存中不能有500万条记录。
有没有办法使用Spring JDBC解决我的问题?如果有帮助,底层数据库将成为DB2。
答案 0 :(得分:2)
阅读javadoc of JdbcTemplate。还有许多其他方法,也称为query()
,它们不返回列表,并以RowCallbackHandler
或ResultSetExtractor
为参数。使用这些。
要设置结果集一次提取的行数,请覆盖applyStatementSettings()
并调用Statement.setFetchSize()
答案 1 :(得分:2)
尝试这样的事情
jdbcTemplate.query(sql, new RowCallbackHandler() {
public void processRow(ResultSet arg0) throws SQLException {
// ...
}
});
这样你可以逐个处理任意数量的记录