我正在执行查询以检索大量 ID(整数)。不是通过 ResultSet 迭代数百万次并将所有内容一个接一个地复制到 ArrayList,是否有某种方法可以简单地将所有内容检索为 ArrayList?
我知道 ResultSet 应该被迭代,因为底层实现可能是缓存内容,但在我的情况下,我只需要立即获得所有 ID。我知道我可以将 FetchSize 设置为一个很大的数字,但是我仍然必须一个一个地检索 ID。
澄清:我想这样做的原因是性能。分析表明,执行 ResultSet.next()、ResultSet.getInt() 和 ArrayList.add() 数百万次需要相当长的时间。我认为数据库(我使用的是用 Java 编写的 H2)可能在内存中某处有数组或列表,所以我正在寻找一种方法将它直接复制给我,而不是通过 ResultSet 迭代接口(interface).
最佳答案
使用 Apache DbUtils库,您可以轻松地将结果集作为 map 列表返回。
public List query(String query) {
List result = null;
try {
QueryRunner qrun = new QueryRunner();
result = (List) qrun.query(connection, query, new MapListHandler());
} catch (Exception ex) {
ex.printStackTrace();
}
return result;
}
关于java - 如何将 JDBC ResultSet 检索为 ArrayList?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/642249/