springboot树形菜单代码
时间: 2023-07-01 22:21:43 浏览: 117
以下是一个简单的基于 Spring Boot 的树形菜单代码示例:
首先,我们需要创建一个实体类 `Menu` ,它将作为我们树形菜单的节点:
```java
public class Menu {
private Long id;
private String name;
private Long parentId;
private List<Menu> children;
// 省略 getter 和 setter 方法
}
```
然后,我们需要创建一个服务类 `MenuService` ,它将负责从数据库中获取菜单数据,并将数据转换为树形结构:
```java
@Service
public class MenuService {
@Autowired
private MenuMapper menuMapper;
public List<Menu> getMenuTree() {
List<Menu> menus = menuMapper.getAllMenus();
Map<Long, Menu> map = new HashMap<>();
for (Menu menu : menus) {
map.put(menu.getId(), menu);
}
List<Menu> tree = new ArrayList<>();
for (Menu menu : menus) {
Long parentId = menu.getParentId();
if (parentId == null || parentId == 0) {
tree.add(menu);
} else {
Menu parent = map.get(parentId);
if (parent != null) {
if (parent.getChildren() == null) {
parent.setChildren(new ArrayList<>());
}
parent.getChildren().add(menu);
}
}
}
return tree;
}
}
```
上面的 `MenuService` 类中,我们使用了一个 `Map` 来快速查找某个节点的父节点,然后遍历所有的节点,将它们添加到它们的父节点的 `children` 属性中,最终返回整个树形结构。
最后,我们需要创建一个控制器类 `MenuController` ,用于处理客户端请求并返回树形菜单数据:
```java
@RestController
public class MenuController {
@Autowired
private MenuService menuService;
@GetMapping("/menus")
public List<Menu> getMenuTree() {
return menuService.getMenuTree();
}
}
```
现在我们就可以使用浏览器或客户端工具(如 Postman)访问 `http://localhost:8080/menus` 接口,获取树形菜单数据了。
阅读全文