假设我有一个具有两个不同的一对多关系的对象。很像:
Customer 1<->M Brands
和Customer 1<->M Orders
假设我的对象Customer
有两个与这两个对象相关的列表。
我读过这个例子:
http: //forum.springsource.org/showthread.php?50617
-rowmapper-with-one-to-many-query 它解释了如何用一个一对多的关系来做到这一点。为了您的方便,这里是ResultSetExtractor
覆盖:
private class MyObjectExtractor implements ResultSetExtractor{
public Object extractData(ResultSet rs) throws SQLException, DataAccessException {
Map<Integer, MyObject> map = new HashMap<Integer, MyObject>();
MyObject myObject = null;
while (rs.next()) {
Integer id = rs.getInt("ID);
myObject = map.get(id);
if(myObject == null){
String description = rs,getString("Description");
myObject = new MyObject(id, description);
map.put(id, myObject);
}
MyFoo foo = new MyFoo(rs.getString("Foo"), rs.getString("Bar"));
myObject.add(myFoo);
}
return new ArrayList<MyObject>(map.values());;
}
}
我不认为它涵盖了如何与两者一起工作。什么是最干净的方法?有没有比条件迭代更简单的方法?在这种情况下,集合会比列表更好吗?