父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;//返回該集合
}
僅供以後參考