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