數據庫中一對多表關聯的聯合查詢重複問題

父bean:project(數據庫中有相關的表對應【主鍵pid】)。 子bean:projectitem(數據庫中有相關的表的對應【主鍵aid】)

父子關係中子的表中有個字段指向父的pid。實現表的一對多關聯

在查詢的是時候父子相關聯join   。。。on。。。方式,所查出來的 的數據有重複問題

如:    簡單表示下                              

父表(project)
1


子表(projectitem)
21
22
23
那麼在join。。on。。合併後就成了一下這種情況:

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章