Java怎么将ResultSet结果集遍历到List中
更新时间:2023-12-12Java如何将ResultSet结果集遍历到List中
ResultSet是Java中处理数据库查询结果非常重要的一个类,它用于封装数据库查询结果,而List是Java中常用的一个集合类型,封装了多个相同类型的元素,那么我们该如何将ResultSet结果集遍历到List中呢?下面我会为大家一一介绍。
第一种方法:使用List和while循环遍历ResultSet结果集
这种方法是最基本、最常见的方法,我们可以通过下面的代码实现:
// 创建List集合对象 ListresultList = new ArrayList<>(); // 获取数据查询结果集 ResultSet rs = stmt.executeQuery(sql); // 循环遍历结果集 while(rs.next()) { String name = rs.getString("name"); resultList.add(name); }
在这段代码中,我们先创建了一个List集合对象resultList,然后通过执行sql语句获取查询结果集ResultSet对象rs,我们使用while循环遍历结果集,通过rs.getString("name")获取每一行结果集中name列的值,最后将其添加到resultList集合中。这样,我们就可以遍历ResultSet结果集并将其封装到List集合中了。
第二种方法:使用Java 8的Stream API遍历ResultSet结果集
如果项目中使用的是Java 8及以上的版本,我们也可以使用Java 8的Stream API来遍历ResultSet结果集。下面是Java 8的Stream API版本的代码:
// 获取数据查询结果集 ResultSet rs = stmt.executeQuery(sql); // 使用Stream API遍历结果集 ListresultList = StreamSupport.stream( new Spliterators.AbstractSpliterator (Long.MAX_VALUE, Spliterator.ORDERED) { public boolean tryAdvance(Consumer<? super String> action) { try { if(!rs.next()) { return false; } action.accept(rs.getString("name")); return true; } catch(SQLException e) { throw new RuntimeException(e); } } public long estimateSize() { return Long.MAX_VALUE; } }, false).collect(Collectors.toList());
在这段代码中,我们使用了Java 8的StreamSupport类来初始化一个Stream对象,然后使用tryAdvance方法遍历结果集中的每一行数据,并将每一行中name列的值传递给Consumer对象,最后使用collect(Collectors.toList())方法来创建List对象,将每行中name列的值封装到集合中。需要注意的是,这种方法对于大量数据的查询可能不太适用。
第三种方法:使用Apache Commons DbUtils提供的ResultSetHandler将ResultSet转换为List
Apache Commons DbUtils是Apache基金会提供的数据库操作工具库,其中提供了ResultSetHandler接口,该接口定义了一个处理查询结果集的方法,我们可以使用这个ResultSetHandler来将ResultSet转换为List集合。下面是具体的实现:
// 获取数据查询结果集 ResultSet rs = stmt.executeQuery(sql); // 使用ResultSetHandler将ResultSet转换成List ResultSetHandler> handler = new ResultSetHandler
>() { public List
handle(ResultSet rs) throws SQLException { List resultList = new ArrayList<>(); while(rs.next()) { resultList.add(rs.getString("name")); } return resultList; } }; List resultList = runner.query(connection, sql, handler);
在这段代码中,我们创建了一个ResultSetHandler对象handler,并重写了handle方法以遍历ResultSet结果集中每一行的数据,并将name列的值添加到resultList集合中。最后,使用query方法将查询语句和handler对象传递给Apache Commons DbUtils提供的QueryRunner对象,并将返回的List集合赋值给resultList对象。需要注意的是,这种方法需要导入Apache Commons DbUtils相关的jar包。
总结
通过本文的介绍,我们了解了三种不同的方法将ResultSet结果集遍历到List集合中:
- 使用List和while循环遍历ResultSet结果集。
- 使用Java 8的Stream API遍历ResultSet结果集。
- 使用Apache Commons DbUtils提供的ResultSetHandler将ResultSet转换为List。
具体使用哪种方法,需要根据项目实际需求和开发环境选择。我们可以根据数据量大小以及项目需要进行选择。此外,需要根据数据库类型、版本以及具体情况来配置连接池、查询参数等信息。