遞迴組裝Cascader 級聯選擇器和Tree 樹形控制元件結構的資料
阿新 • • 發佈:2018-12-07
以商品分類表為例,重點看分類ID和父分類ID
public List<Map<String,Object>> getGoodsCategoryTree() { //1.獲取所有商品分類,條件:category_id!=0(0為頂級選單的父類ID)和disabled=0(刪除標記為正常) List<GoodsCategoryEntity> goodsCategoryList = this.baseMapper.selectList(new EntityWrapper<GoodsCategoryEntity>() .ne("category_id", 0) .eq("disabled", 0)); //2.呼叫生成tree結構資料的方法,引數是所有商品分類和頂級選單父類ID List<Map<String,Object>> categoryTree = categoryTreeHandle(goodsCategoryList, 0); return categoryTree; }
private List<Map<String,Object>> categoryTreeHandle(List<GoodsCategoryEntity> categoryEntityList, int pid) { List<Map<String,Object>> resultList = new ArrayList<>(); //獲取頂級元素集合 Integer parentId; for (GoodsCategoryEntity goodsCategory : categoryEntityList) { parentId = goodsCategory.getParentCategoryId(); if (pid == parentId) { Map map = new HashMap(); map.put("label", goodsCategory.getCategoryName()); map.put("value", goodsCategory.getCategoryId()); resultList.add(map); } } //獲取每個頂層元素的子資料集合 for (Map map : resultList) { int value = Integer.parseInt(map.get("value").toString()); List<Map<String,Object>> temp = categoryTreeHandle(categoryEntityList, value); if (temp.size() > 0) { map.put("children", temp); } } return resultList; }
頁面接收到的資料效果
主要是應用遞迴遍歷出父節點下的所有子節點