欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

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

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

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

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


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


Controller代碼

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

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

    // 注意:整個(gè)過程將所有數(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中


    }


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

    // 循環(huán)數(shù)據(jù),將數(shù)據(jù)放到該節(jié)點(diǎn)的父節(jié)點(diǎn)的children屬性中
    for(int i =0 ;i<tbCategories.size()&& !tbCategories.isEmpty();i++){
      // 數(shù)據(jù)庫中,若一個(gè)元素有子節(jié)點(diǎn),那么,該元素的id為子節(jié)點(diǎn)的父id
      //treeMap.get(tbCategories.get(i).getParentId()); // 從map集合中找到父節(jié)點(diǎn)
      TbCategory category = (TbCategory)treeMap.get(tbCategories.get(i).getParentId());
      if(category!=null ){ // 不等于null,也就意味著有父節(jié)點(diǎn)
        // 有了父節(jié)點(diǎn),要判斷父節(jié)點(diǎn)下存貯字節(jié)點(diǎn)的集合是否存在,然后將子節(jié)點(diǎn)放入
        if(category.getChildList() == null){
          // 判斷一個(gè)集合是否被創(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é)點(diǎn)的ChildList集合下

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

    }


   return resultList;
  }

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

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

廣告

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

營銷型網(wǎng)站建設(shè)