Acquisition d'arborescence récursive de classification de produit à trois niveaux
manette
Ajouter une nouvelle méthode à la couche de contrôle GategoryController du module produit
/**
* 返回三级分类tree
*/
@RequestMapping("/list/tree")
public R listTree(){
List<CategoryEntity> tree = categoryService.getTree();
return R.ok().put("data", tree);
}
entité
Ajouter une structure de sous-classe
@TableField (exist = false) mybatis-plus annotation-not in the table structure
/**
* 子类category
*/
@TableField(exist = false)
private List<CategoryEntity> child;
un service
GateService ajouté
List<CategoryEntity> getTree();
Classe d'implémentation
@Override
public List<CategoryEntity> getTree() {
//查询出所有
List<CategoryEntity> all =baseMapper.selectList(null);
//组装成父子结构——改变category的结构
//找到所有的一级分类
List<CategoryEntity> lv1Menu = all.stream().filter(menu->
menu.getParentCid()== 0
).map((menu)->{
//通过递归找到子分类
menu.setChild(getChild(menu,all));
return menu;
}).sorted((menu1,menu2)->{
return menu1.getSort()-menu2.getSort();
}).collect(Collectors.toList());
return lv1Menu;
}
Parmi eux, map () trouve toutes les sous-classes en appelant la méthode récursive
private List<CategoryEntity> getChild(CategoryEntity root , List<CategoryEntity> all){
List<CategoryEntity> child = all.stream().filter(menu->
menu.getParentCid()==root.getCatId()).map((menu)->{
//通过递归找到子分类
menu.setChild(getChild(menu,all));
return menu;
}).sorted((menu1,menu2)->{
return menu1.getSort()-menu2.getSort();
}).collect(Collectors.toList());
return child;
}
test
Commencer la visite du projet
http: // localhost: 10000 / produit / catégorie / liste / arbre
Obtenez json