二级菜单树的实现

1.实体类SysMenu:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class SysMenu {
    @TableId(type = IdType.AUTO)
    private Long id;

    @TableField(value = "menu_name")
    private String menuName;

    @TableField(value = "menu_permission")
    private String menuPermission;

    @TableField(value = "menu_path")
    private String menuPath;

    @TableField(value = "menu_parent_id")
    private Long menuParentId;

    @TableField(value = "menu_type")
    private int menuType;

    @TableField(value = "order_num")
    private int orderNum;

    @TableField(value = "create_time")
    private LocalDateTime createTime;

    @TableField(value = "update_time")
    private LocalDateTime updateTime;

    @TableField(exist = false)
    private List<SysMenu> menuList = new ArrayList<>();
}

2.sql语句MenuMapper.xml:

<select id="selectAll" resultType="com.qcby.demo1107.entity.SysMenu">
        select * from sys_menu
</select>

3.mapper层MenuMapper:

public interface MenuMapper extends BaseMapper<SysMenu> {
    List<SysMenu> selectAll();

}

4.Service层MenuService:

public interface MenuService extends IService<SysMenu> {
    ResultJson menuTree();
}

Service的实现类ServiceImpl:

@Service
@Transactional
public class MenuServiceImpl extends ServiceImpl<MenuMapper, SysMenu> implements MenuService {

    @Autowired
    private MenuMapper menuMapper;

    @Override
    public ResultJson menuTree() {
        List<SysMenu> menuList = menuMapper.selectAll();
        List<SysMenu> firstMenuList = new ArrayList<>();

        for (int i = 0; i < menuList.size(); i ++){
            if (menuList.get(i).getMenuParentId() == 1){
                firstMenuList.add(menuList.get(i));
            }
        }

        //遍历一级菜单
        for (int i = 0; i < firstMenuList.size(); i ++){
            //遍历所有菜单
            for (int j = 0; j < menuList.size(); j ++){
                if (menuList.get(j).getMenuParentId() == firstMenuList.get(i).getId()){
                    firstMenuList.get(i).getMenuList().add(menuList.get(j));
                }
            }
        }

        return ResultJson.ok("生成", firstMenuList);
    }
}

5.Controller层:

@RestController
@RequestMapping("menu")
public class MenuController {

    @Autowired
    private MenuService menuService;

    @RequestMapping("menuTree")
    public ResultJson menuTree(){
        return menuService.menuTree();
    }
}

测试:
在这里插入图片描述
成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值