父bean:project(数据库中有相关的表对应【主键pid】)。 子bean:projectitem(数据库中有相关的表的对应【主键aid】)
父子关系中子的表中有个字段指向父的pid。实现表的一对多关联
在查询的是时候父子相关联join 。。。on。。。方式,所查出来的 的数据有重复问题
如: 简单表示下
父表(project) |
1 |
子表(projectitem) |
21 |
22 |
23 |
1 | 21 |
1 | 22 |
1 | 23 |
List<String> keyLst = new ArrayList<String>();
Map<String, Project> projMap = new HashMap<String, Project>();
for(Project proj : projectsList){//对查询出来的 集合进行遍历
if(projMap.get(proj.getPid()) == null){//
projMap.put(proj.getPid(), proj);//如果projMap里面没有该父的pid就说明该父项是第一次出现,没有重复过。装入map里
keyLst.add(proj.getPid());//这个主要想记录下父的id,以便后面遍历装载的时候能不破坏顺序。如果对遍历结果没有顺序要求,可以不写
}else{
projMap.get(proj.getPid()).getItems().addAll(proj.getItems());//如果父重复过,就把重复父下的子加到相应的子集合里面
}
}
Iterator it = projectMap.entrySet().iterator();
projectsList.clear();
for(String key : keyLst){
projectsList.add(projMap.get(key));//遍历加到集合中
}
return projectsList;//返回该集合
}
仅供以后参考