簡體   English   中英

從多個結果集中將數據檢索到單個Java列表中

[英]Retrieving data from multiple resultsets into a single java 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);

    }

如果目標是避免為所有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.....));
    }
}

如果結果集僅包含一個對象,則無需進行循環。 而是使用簡單的if語句檢查數據是否可用。

就像是:

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

對您所有的ResultSet對象執行此操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM