java 遞迴查詢樹形選單結構(個人認為是最簡單的)
阿新 • • 發佈:2018-12-17
/** * 獲取無限級的類別資源 */ @Override public List<Object> findTypeTree() throws BusinessException { Map<String,Object> map = new HashMap<>(); map.put("EQ_parentId",0); Map<String, SearchFilter> filters = SearchFilter.parse(map); List<Order> orderList = new ArrayList<>(); Order order = new Order("sortNum"); orderList.add(order); Sort sort = new Sort(orderList); //預設查詢出所有的一級類別 List<TypeInfo> typeList = (List<TypeInfo>) typeInfoRepository.findAll(DynamicSpecifications.bySearchFilter(filters.values(), TypeInfo.class),sort); List<Object> list = new ArrayList<>(); for (TypeInfo typeInfo : typeList) { JSONObject treeObject = new JSONObject(true); treeObject.put("id", typeInfo.getTypeId()); treeObject.put("text", typeInfo.getName()); treeObject.put("children", getChildren(typeInfo.getTypeId())); list.add(treeObject); } return list; } public List<Object> getChildren(Long parentId){ List<Object> list = new ArrayList<>(); List<TypeInfo> children = typeInfoRepository.findTypeInfoByParentIdAndSortNum(parentId); for (TypeInfo typeInfo : children) { if(parentId == typeInfo.getParentId()) { JSONObject obj = new JSONObject(true); obj.put("id", typeInfo.getTypeId()); obj.put("text", typeInfo.getName()); obj.put("children", getChildren(typeInfo.getTypeId())); list.add(obj); } } return list; }
getChildren()方法傳入一級類別的id 作為父id查詢出其子類別,然後遞迴掉用getChildren()方法 實現樹形選單結構樹