Java实现多级菜单(基于Springboot+Mybatis)
时间: 2024-01-30 20:04:19 浏览: 235
实现多级菜单可以使用树形结构,可以通过递归实现。以下是一个简单的Java实现多级菜单的示例:
首先定义一个菜单实体类,包含菜单id、父级菜单id、菜单名称、菜单url等属性。
```java
public class Menu {
private Long id;
private Long parentId;
private String name;
private String url;
// 省略getter和setter方法
}
```
接着,在菜单服务类中定义一个方法,用于获取所有菜单项,然后递归构建树形结构。
```java
@Service
public class MenuService {
@Autowired
private MenuMapper menuMapper;
public List<Menu> getMenuList() {
List<Menu> menuList = menuMapper.selectAll();
List<Menu> result = new ArrayList<>();
// 找出所有的根菜单
for (Menu menu : menuList) {
if (menu.getParentId() == null) {
result.add(menu);
}
}
// 构建树形结构
for (Menu menu : result) {
menu.setChildren(getChildren(menu, menuList));
}
return result;
}
private List<Menu> getChildren(Menu parent, List<Menu> menuList) {
List<Menu> children = new ArrayList<>();
for (Menu menu : menuList) {
if (parent.getId().equals(menu.getParentId())) {
children.add(menu);
menu.setChildren(getChildren(menu, menuList));
}
}
return children;
}
}
```
在Controller中调用菜单服务类的getMenuList方法,然后将结果返回给前端即可。
```java
@RestController
@RequestMapping("/menu")
public class MenuController {
@Autowired
private MenuService menuService;
@GetMapping("/list")
public List<Menu> getMenuList() {
return menuService.getMenuList();
}
}
```
以上代码实现了基于Springboot+Mybatis的多级菜单,前端可以通过递归遍历树形结构来构建菜单。
阅读全文