Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将ResultSet多个值放入Java对象_Java_Mysql_Sql_Prepared Statement_Resultset - Fatal编程技术网

如何将ResultSet多个值放入Java对象

如何将ResultSet多个值放入Java对象,java,mysql,sql,prepared-statement,resultset,Java,Mysql,Sql,Prepared Statement,Resultset,我有两个表Person(Person\u id,name)和Address(Address\u id,Person\u id,addressName),它们的关系是一对多 通过以下查询,我得到 String query=“选择Person\u id,从Person中选择addressName,其中Person\u id=Person\u id” PreparedStatement pstmt=(PreparedStatement)con.prepareStatement(查询); 结果集rs=p

我有两个表
Person(Person\u id,name)
Address(Address\u id,Person\u id,addressName)
,它们的关系是一对多

通过以下查询,我得到

String query=“选择Person\u id,从Person中选择addressName,其中Person\u id=Person\u id”
PreparedStatement pstmt=(PreparedStatement)con.prepareStatement(查询);
结果集rs=pstmt.executeQuery();
while(rs.next()){
}
个人识别码 地址名 1001 地址-1 1001 地址-2 1002 地址-1
您需要在一段时间内构建类似的对象

Person person = null;
List<String> addrList = new ArrayList<String>();
while (rs.next()) {
int id = rs.getXXX() //you will personid 

if(person==null) {
   person = new Person();
   person.setId(id);
   addrList.add(rs.getXXX);
   person.setAddresses(addrList);
} else if(id!=person.getId()) {
  person = new Person();
   person.setId(id);
   addrList.add(rs.getXXX);
   person.setAddresses(addrList);
}
}
Person=null;
List addrList=new ArrayList();
while(rs.next()){
int id=rs.getXXX()//您将使用personid
if(person==null){
person=新的person();
person.setId(id);
addrList.add(rs.getXXX);
个人设置地址(地址列表);
}else if(id!=person.getId()){
person=新的person();
person.setId(id);
addrList.add(rs.getXXX);
个人设置地址(地址列表);
}
}

首先,在[SQL]查询中添加
按个人id排序的订单。
此外,您的[SQL]查询应该使用

选择P.PERSON\u ID,A.ADDRESSNAME
来自P人
加入地址A
在P.PERSON\u ID=A.PERSON\u ID上
按P.PERSON\u ID订购
每当
PERSON\u ID
更改时,创建一个新的
PERSON
对象并设置
ID
成员。
个人ID保持不变时,将所有地址收集到
java.util.List

您可能还需要另一个
java.util.List
来容纳所有人

java.util.List people=new java.util.ArrayList();
int currentId=0;//假设没有这样的ID。
int-id;
Person=null;
java.util.List地址;
while(rs.next()){
id=rs.getInt(1);
如果(id!=当前id){
if(person!=null){
个人地址(地址);
人。添加(人);
}
person=新的person();
person.setId(id);
currentId=id;
addresses=new java.util.ArrayList();
}
address.add(rs.getString(2));
}
//添加最后一个人。
if(person!=null){
个人地址(地址);
人。添加(人);
}

当然,作为一种替代方法,如果相关的话,您可以使用(ORM)工具,如。

今天的提示:切换到现代的显式
JOIN
语法。更易于写入(无错误),更易于读取(和维护),并且在需要时更易于转换为外部联接。