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


項目中的一個需求是獲取一個商品所屬的二級分類名稱。
思路分析,首先,我們是可以拿到當前商品所屬的子分類的,比如說我買的是一個iPhone SE,對應的分類名稱是 iPhone低端版 ,然后反向遞歸去查詢父分類。它的父分類是 iPhone ,同理,iPhone的父分類是手機,所以最后面我們拿到的對象應該是 手機 這個二級分類。
首先我們獲寫一個獲取全部分類的方法方便我們后面使用:private List<TblCategory> allCategory = categoryMapper.findAllCategory();
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 說明我們找到了二級分類,所以這里直接返回,跳遞歸了,否則就一直去查找,直到找到為止。
