数据库中一对多表关联的联合查询重复问题

父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;//返回该集合
	}
仅供以后参考

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