Java根據子節點遞歸父節點

先上數據庫結構圖和樹形圖;java

項目中的一個需求是獲取一個商品所屬的二級分類名稱。數據庫

思路分析,首先,咱們是能夠拿到當前商品所屬的子分類的,好比說我買的是一個iPhone SE,對應的分類名稱是 iPhone低端版 ,而後反向遞歸去查詢父分類。它的父分類是 iPhone ,同理,iPhone的父分類是手機,因此最後面咱們拿到的對象應該是 手機 這個二級分類。app

 

首先咱們獲寫一個獲取所有分類的方法方便咱們後面使用:private List<TblCategory> allCategory = categoryMapper.findAllCategory();spa

 public TblCategory getParentCategoryObject(TblCategory category) {
        if (category.getParentId() == 1) {
            return category;
        }

        TblCategory tblCategory = allCategory.stream().filter(
                x -> Objects.equals(x.getCategoryId(), category.getParentId())
        ).findFirst().get();

        return getParentCategoryObject(tblCategory);
    }

  

category.getParentId() == 1 說明咱們找到了二級分類,因此這裏直接返回,跳遞歸了,不然就一直去查找,直到找到爲止。
相關文章
相關標籤/搜索