创建数据结构
CREATE TABLE `menu` (
`id` bigint(20) unsigned NOT NULL COMMENT '主键',
`name` varchar(11) NOT NULL COMMENT '名称',
`sort_no` smallint(5) unsigned NOT NULL DEFAULT '10' COMMENT '排序号',
`parent_id` bigint(20) unsigned NOT NULL COMMENT '父节点id',
`icon` varchar(200) DEFAULT NULL COMMENT '图标',
`remark` varchar(20) DEFAULT NULL COMMENT '备注',
`url` varchar(60) DEFAULT NULL COMMENT '菜单链接',
`level` tinyint(4) DEFAULT NULL COMMENT '菜单等级',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='菜单表';
结束
组装树形结构
public List<Menu> getChild(Long pid, List<Menu> menus) {
List<Menu> childList = new ArrayList<>();
for (Menu menu : menus) {
if (pid.equals(menu.getParentId())) {
childList.add(menu);
}
}
for (Menu menu : childList) {
List<Menu> child = getChild(menu.getId(), menus);
menu.setChildren(child);
}
if (childList.size() == 0) {
return new ArrayList<>();
}
return childList;
}
获取所有的资源
public List<Menu> getAllMenus(){
List<Menu> menus = this.loadAll();
List<Menu> rootMenus = new ArrayList<>();
for (Menu menu : menus) {
if (0==(menu.getParentId())) {
rootMenus.add(menu);
}
}
for (Menu rootMenu : rootMenus) {
List<Menu> child = getChild(rootMenu.getId(), menus);
rootMenu.setChildren(child);
}
return rootMenus;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步