版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.youkuaiyun.com/xqnode/article/details/79639106
1.建菜单表
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;
2.造一些数据
3.撸代码
这里只展示递归生成树的代码,查询数据库的操作非常简单,只用到了一句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;
}
返回数据格式如下:
end