成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Element的el-tree控件后臺數(shù)據(jù)結(jié)構(gòu)的生成以及方法的抽取-創(chuàng)新互聯(lián)

最近用到了el-tree控件,主要是數(shù)據(jù)的格式,按照官網(wǎng)的數(shù)據(jù)格式來就可以顯示節(jié)點的樹形結(jié)構(gòu)了。
代碼參考很多

裕民網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)公司于2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。

這里給出一個比較好的鏈接:https://www.jb51.net/article/181990.htm


代碼說明在注釋里寫的很詳細了已經(jīng),這里不再敘述說明。至于為什么抽取成這種格式的數(shù)據(jù),那是因為ElementUI-tree規(guī)定的數(shù)據(jù)格式,你想要用這個控件,就必須按照他們規(guī)定的這個格式 來。
數(shù)據(jù)格式如下:


Controller代碼

@RequestMapping("/cateList")
  @ResponseBody
  public List<TbCategory> cateList() {

    // 整體思路:
    // 1、取得所有數(shù)據(jù)、放入集合List1 (tbCategories)
    // 2、將List1所有數(shù)據(jù)都放入到map(treeMap)中:元素id為鍵,元素本身對象為值
    // 3、取得頂層節(jié)點放入集合List2中(resultList)
    // 4、遍歷List1中的所有數(shù)據(jù),通過數(shù)據(jù)的parentId為鍵在map中取值
    //   1)如果能取到,則說明該元素有父節(jié)點
    //      1、判斷該父節(jié)點下的childList中是否有已經(jīng)子節(jié)點
    //       1、若無:則創(chuàng)建一個集合,將子節(jié)點放入
    //       2、若有:則直接將子節(jié)點放入即可
    // 5、把放好的數(shù)據(jù)放回到map中
    // 6、返回List2(resultList)

    // 注意:整個過程將所有數(shù)據(jù)取出放入list2(resultList),返回的也是  //list2


    List<TbCategory> tbCategories = categoryService.cateList();

    List<TbCategory> resultList = new ArrayList<TbCategory>(); // 存貯頂層的數(shù)據(jù)

    Map<Object ,Object> treeMap = new HashMap();
    Object itemTree;

    for(int i = 0;i<tbCategories.size() && !tbCategories.isEmpty();i++){
      itemTree = tbCategories.get(i);
      treeMap.put(tbCategories.get(i).getNodeId(),tbCategories.get(i));// 把所有的數(shù)據(jù)都放到map中


    }


// 這里也可以用另一種方法,就是拿到集合里的每個元素的父id去數(shù)據(jù)庫中查詢,但是,這樣與數(shù)據(jù)庫的交互次數(shù)就太多了
 // 遍歷map得到頂層節(jié)點(游離節(jié)點也算作頂層節(jié)點)
    for(int i =0;i<tbCategories.size();i++){
      // 優(yōu)點1:整個方法,只查詢了一次數(shù)據(jù)庫
      // 優(yōu)點2:不用知道頂層節(jié)點的id
     if(!treeMap.containsKey(tbCategories.get(i).getParentId())){
        // 我們在存儲的時候就是將元素的id為鍵,元素本身為值存入的
        // 以元素的父id為鍵,在map里取值,若取不到則,對應(yīng)的元素不存在,即沒有父節(jié)點,為頂層節(jié)點或游離節(jié)點
        // 將頂層節(jié)點放入list集合
        resultList.add(tbCategories.get(i));
      }
    }

    // 循環(huán)數(shù)據(jù),將數(shù)據(jù)放到該節(jié)點的父節(jié)點的children屬性中
    for(int i =0 ;i<tbCategories.size()&& !tbCategories.isEmpty();i++){
      // 數(shù)據(jù)庫中,若一個元素有子節(jié)點,那么,該元素的id為子節(jié)點的父id
      //treeMap.get(tbCategories.get(i).getParentId()); // 從map集合中找到父節(jié)點
      TbCategory category = (TbCategory)treeMap.get(tbCategories.get(i).getParentId());
      if(category!=null ){ // 不等于null,也就意味著有父節(jié)點
        // 有了父節(jié)點,要判斷父節(jié)點下存貯字節(jié)點的集合是否存在,然后將子節(jié)點放入
        if(category.getChildList() == null){
          // 判斷一個集合是否被創(chuàng)建用null:表示結(jié)合還沒有被分配內(nèi)存空間(即還沒有被創(chuàng)建),內(nèi)存大小自然為null
          // 用集合的size判斷集合中是否有元素,為0,沒有元素(集合已經(jīng)被創(chuàng)建),
          category.setChildList(new ArrayList<TbCategory>());
        }
        category.getChildList().add(tbCategories.get(i)); // 添加到父節(jié)點的ChildList集合下

        // 這一步其實可以不要,因為我們修改了數(shù)據(jù)(添加了子節(jié)點,然后在將元素放入到map中,
        // 若鍵相同,map會自動覆蓋掉相同的鍵值對,達到更新map集合中的數(shù)據(jù)的目的),但是我們
        // 這里只是從map中取值,而并不關(guān)心值的子節(jié)點(子節(jié)點是對象本身自己封裝的。這里我們知道
        // 元素從查詢后放入map,父節(jié)點放入list,然后通過鍵來在map中取得對象,之后再將修改過的對象重新放入map當中
        // ,我們并沒有直接操作list,但是在list中對象的值卻是已經(jīng)修改過了,這就是對象的引用傳遞,同一個引用對象是通過
        // 地址值來操作對象的,即有不同的引用,但是對象中的屬性是已經(jīng)通過引用的操作而改變的,所以這里一旦修改過后,無論是map中還是list中,再次取值時都已經(jīng)是更改過后的值了)
        treeMap.put(tbCategories.get(i).getParentId(),category); // 把放好的數(shù)據(jù)放回到map中
      }

    }


   return resultList;
  }

文章標題:Element的el-tree控件后臺數(shù)據(jù)結(jié)構(gòu)的生成以及方法的抽取-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://jinyejixie.com/article42/dedhec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)網(wǎng)站導(dǎo)航、網(wǎng)站設(shè)計公司App設(shè)計、自適應(yīng)網(wǎng)站、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)
眉山市| 广德县| 汉源县| 郓城县| 呼图壁县| 梁平县| 应城市| 威远县| 金华市| 资溪县| 玉树县| 苍溪县| 南投县| 连云港市| 西充县| 微博| 凉城县| 东兴市| 南乐县| 麦盖提县| 台湾省| 漯河市| 昌图县| 汶上县| 永宁县| 湘西| 巴塘县| 元朗区| 蓝山县| 临湘市| 桦甸市| 奈曼旗| 东源县| 监利县| 弥勒县| 九龙坡区| 四子王旗| 保德县| 阿城市| 西和县| 高雄县|