1.根据父id进行查询,展示结果树化。
原文件查询结果
让类型格式树化
数据库的数据
实体层的建立,建立一个类型的实体。
mapper层的查询语句
业务层的代码实现
public List<Type> selectByOld(Map<String, String> params) {
params.put("oid", "'" + params.get("oid").replace(",", "','") + "'");
List<DropDown> all= dropMapper.selectByOld(params);
HashMap<String, Type> map = new HashMap<>();
for (DropDown dropDown:all){
String orgId = dropDown.getParent();
//获取父类的id
if (!map.containsKey(orgId)){
//判断map里面是否有父id,如果没有则将父id插入,然后创建新的ComBoxInfoDTO对象 ,如果有则不用创建
map.put(orgId,new Type(orgId,dropDown.getParName(),new ArrayList<Type>()));
}
Type com=map.get(orgId);
//根据父id的得到这个对象
String fieldId = dropDown.getId();
//获取子类的对象,如果子类为空或则为null结束循环。
if (fieldId==null || fieldId.isEmpty()){
continue;
}
Type type = new Type(fieldId, dropDown.getName(), new ArrayList<Type>());
//根据父id获取的对象进行循环
for (Type child:com.getChildren()){
//如果孩子的id和子id相同,则将对象添加到父id中
if (child.getId().equals(fieldId)){
type=child;
break;
} }
com.addChild(type);
}
Collection<Type> values = map.values();
List<Type> collect = values.stream().collect(Collectors.toList());
return collect;
}
最终形成下拉框的类型