需求:递归查询子树
public class MenuTest {
/**
* 数据表结构
* id name pid
* 1 test -1
* 2 test2 1
* 3 test3 1
* 返回类型
* [{id:'',name:'',children:[{id:'',name:'',children:[]}]}]
* @return
*/
private List<Menu> getAllList(){
// 获取所有的父级的id
// select * from menu where pid='-1'
List<Menu> list = getAllParent();
// 获取子类
subChildren(list);
return list;
}
private void subChildren(List<Menu> list) {
if (list==null){
return;
}
for(Menu menu:list){
// select * from menu where pid = #{menu.id}
List<Menu> children = getListChilrenByPid(menu.getId());
subChildren(list);
menu.setChildren(children);
}
}
}
@Data
class Menu{
private String id;
private String name;
private List<Menu> children;
}