CREATE TABLE `t_menu` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`pid` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4;
注意:根节点的pid=0,其他节点的pid跟id是有对应的父子关系的。
这里只展示递归生成树的代码,查询数据库的操作非常简单,只用到了一句sql,然后将结果封装成List。
select id, pid, `name` from t_menu
service代码:
@Override
public List<Menu> tree() {
// 查询出所有的菜单数据集合
List<Menu> menus = menuMapper.selectAll();
// 生成菜单树
return createTree(0, menus);
}
/**
* 递归生成菜单树
*/
private List<Menu> createTree(int pid, List<Menu> menus) {
List<Menu> treeMenu = new ArrayList<>();
for (Menu menu : menus) {
if (pid == menu.getPid()) {
treeMenu.add(menu);
menu.setChildren(createTree(menu.getId(), menus));
}
}
return treeMenu;
}
返回数据格式如下:
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://lebron.blog.csdn.net/article/details/125669566
内容来源于网络,如有侵权,请联系作者删除!