如何将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
语法。更易于写入(无错误),更易于读取(和维护),并且在需要时更易于转换为外部联接。