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