【springboot+mybatis-plus】菜单树

本文介绍如何使用SpringBoot结合Mybatis-Plus来实现菜单数据的查询及构建菜单树结构,主要涉及Service层的操作。
摘要由CSDN通过智能技术生成
@Data
@TableName("这里写自己数据库表里的名称")
public class MenuPO extends BasePO{
   

    /** 菜单主键id */
    @TableId(type = IdType.INPUT)
    private Long menuId;

    /** 上级菜单ID */
    private Long parentId;

    /** 菜单编码 */
    private String menuCode;

    /** 菜单类型 */
    private String menuType;

    /** 菜单名称 */
    private String menuName;
}
VO: 这是给VO里面添加一个子菜单方便使用
@Data
public class MenuVO extends BaseVO {
   

    /** 菜单主键id */
    private Long menuId;

    /** 上级菜单ID */
    private Long parentId;

    /** 菜单编码 */
    private String menuCode<
实现多级菜单可以使用形结构,可以通过递归实现。以下是一个简单的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.selectList(null); 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-plus的多级菜单,前端可以通过递归遍历形结构来构建菜单
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值