假设有2个表:PERSON和TELEPHONE。将结果集映射到对象的最佳方式是什么
一个人可以有多个电话。 电话号码只能由一个人拥有。
当我加入这两个表,返回的结果集是
P_ID NAME TEL_NO
1 ALVIN 911
1 ALVIN 912
1 ALVIN 913
2 ERIC 922
2 ERIC 923
但在我的HTML,我想显示的页面为:
ID: 1 Name : ALVIN TEL_NO: 911, 912, 913
ID: 2 Name : ERIC TEL_NO: 922, 923
什么是阅读的最有效的方法结果集并显示如上所示的数据?
如果我遍历ResultSet并将其打印在页面上。 它会有多个同名ALVIN和ERIC的行。 但我想在同一行打印同一人的所有TEL_NO。
我有一个存储PERSON详细信息的Java类。
public class Person {
public int id;
public String name;
public List<Integer> telNos = new ArrayList<Integer>();
}
List<Person> persons = new ArrayList<Person>;
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
while(resultSet.next()) {
int pId = resultSet.getInt("P_ID");
String name = resultSet.getString("NAME");
int telNo = resultSet.getInt("TEL_NO");
if(map.containsKey(pId)){
Person person = persons.get(map.get(pId));
person.telNos.add(telNo);
} else {
Person person = new Person();
person.id = pId;
person.name = name;
person.telNos.add(telNo);
map.put(pId, persons.size());
persons.add(person);
}
}
最后,我通过人的JSP进行显示。
我的问题是:有没有更好的方式来循环和显示结果集,而没有相同的P_ID在不同的行的HTML表。
请澄清你所说的“最有效”的意思。处理时间有效吗?清晰度和代码长度有效吗?内存使用效率高吗?通过网络发送的数据有效吗?另外,你在使用什么框架? – jpmc26
我没有使用任何框架,我只是使用java JDBC来查询ResultSet。我只是想知道如何使用ResultSet显示上面的页面。 –
你的问题说你有HTML。您没有使用Web框架或模板引擎来构建和交付它?你也没有回答我关于效率的问题。 – jpmc26