[英]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.