将多个结果集中的数据检索到单个Java列表中

时间:2017-10-19 06:28:48

标签: java spring list

我有三个结果集和一个列表。如何在不使用三个while(rs1.next())的情况下迭代三个结果集,并将数据返回到列表中。

public Optional<List<StudentDetails>> getStudDetails(String id)
    {
        List<StudentDetails> stud= new ArrayList<StudentDetails>();
        ResultSet rs1 = (ResultSet) storedProcedureCall.getObject(4);
        ResultSet rs2 = (ResultSet) storedProcedureCall.getObject(5);
        ResultSet rs3 = (ResultSet) storedProcedureCall.getObject(6);

    }

2 个答案:

答案 0 :(得分:1)

如果目标是避免为所有ResultSet(3个循环)编写相同的代码,则可以创建循环ResultSet的方法,为每行生成StudentDetails个对象并将其添加到列表中。

以下是一个例子:

public Optional<List<StudentDetails>> getStudDetails(String id){
    List<StudentDetails> stud= new ArrayList<StudentDetails>();
    ResultSet rs1 = (ResultSet) storedProcedureCall.getObject(4);
    ResultSet rs2 = (ResultSet) storedProcedureCall.getObject(5);
    ResultSet rs3 = (ResultSet) storedProcedureCall.getObject(6);
    addStudentDetails(stud, rs1);
    addStudentDetails(stud, rs2);
    addStudentDetails(stud, rs3);
}

private static void addStudentDetails(List<StudentDetails> list, ResultSet rs){
    while(rs.next()){
        list.add(new StudentDetails(rs.get.....));
    }
}

答案 1 :(得分:0)

如果结果集只包含一个对象,那么您不需要进行循环。而是使用简单的if语句来检查数据是否可用。

类似的东西:

if(resultSet.hasNext()){
   Object obj= objresultSet.next();
}

对所有ResultSet对象执行此操作