使用ssm框架实现菜单列表管理

文章描述了在Java应用中,如何通过Controller调用Service层的方法,利用Service层调用Mapper查询数据库,获取菜单的父子级关系,并使用递归和封装类将其转换为树形结构的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

菜单列表:有父级框和子级框,需要将两者关系从数据库在这里插入图片描述这两者是多对多的关系。所以需要从数据库将两者关系获取并封装成List。
1、controller层
直接调用service层方法

@ApiOperation("获取菜单")
    @GetMapping("findNodes")
    public Result findNodes() {
        List<SysMenu> list = sysMenuService.findNodes();
        return Result.ok(list);
    }

2、service层
需要实现的功能:将列表的父级子级关系从数据库中拿出来进行封装成要求的List形式。

service接口

public interface SysMenuService extends IService<SysMenu> {

    List<SysMenu> findNodes();
}

service实现类
调用mapper层数据接口查询到所有的数据。
取封装类的方法将数据封装成树形结构。

@Service
public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements SysMenuService {

    @Override
    public List<SysMenu> findNodes() {

        // 查询数据
        List<SysMenu> SysMenuList = baseMapper.selectList(null);

        // 构建树形结构
        List<SysMenu> resultList = MenuHelper.buildTree(SysMenuList);
        return resultList;
    }
}

封装类代码:使用递归实现;
递归入口:循环找到最顶层父级id进入到递归过程中 ,找到属于它的子级目录进行封装
注意判空初始化

public class MenuHelper {
    public static List<SysMenu> buildTree(List<SysMenu> sysMenuList) {
        List<SysMenu> trees = new ArrayList<>();
        for (SysMenu sysMenu : sysMenuList) {
        // 递归入口
            if(sysMenu.getParentId().longValue() == 0) {
                trees.add(getChildren(sysMenu, sysMenuList));
            }
        }
        return trees;
    }

    public static SysMenu getChildren(SysMenu sysMenu, List<SysMenu> sysMenuList) {

        sysMenu.setChildren(new ArrayList<SysMenu>());
        for (SysMenu item : sysMenuList) {
        // 找到该父级所对应的自己列表进行加入
            if(sysMenu.getId() == item.getParentId()) {
                if (sysMenu.getChildren() == null) {
                    sysMenu.setChildren(new ArrayList<>());
                }
                sysMenu.getChildren().add(getChildren(item, sysMenuList));
            }
        }
        return sysMenu;
    }
}

运行结果
使用swargger进行测试 有父子级关系,成功!

"children": [
        {
          "id": 3,
          "createTime": "2021-05-31 18:05:37",
          "updateTime": "2022-06-09 09:22:47",
          "isDeleted": 0,
          "param": {},
          "parentId": 2,
          "name": "用户管理",
          "type": 1,
          "path": "sysUser",
          "component": "system/sysUser/list",
          "perms": "",
          "icon": "el-icon-s-custom",
          "sortValue": 1,
          "status": 1,
          "children": [
            {
              "id": 6,
              "createTime": "2021-05-31 18:05:37",
              "updateTime": "2022-06-09 09:22:38",
              "isDeleted": 0,
              "param": {},
              "parentId": 3,
              "name": "查看",
              "type": 2,
              "path": null,
              "component": null,
              "perms": "bnt.sysUser.list",
              "icon": null,
              "sortValue": 1,
              "status": 1,
              "children": [],
              "select": false
            },
            {
              "id": 7,
              "createTime": "2021-05-31 18:05:37",
              "updateTime": "2022-06-09 09:22:38",
              "isDeleted": 0,
              "param": {},
              "parentId": 3,
              "name": "添加",
              "type": 2,
              "path": null,
              "component": null,
              "perms": "bnt.sysUser.add",
              "icon": null,
              "sortValue": 1,
              "status": 1,
              "children": [],
              "select": false
            },
            {
              "id": 8,
              "createTime": "2021-05-31 18:05:37",
              "updateTime": "2022-06-09 09:22:38",
              "isDeleted": 0,
              "param": {},
              "parentId": 3,
              "name": "修改",
              "type": 2,
              "path": null,
              "component": null,
              "perms": "bnt.sysUser.update",
              "icon": null,
              "sortValue": 1,
              "status": 1,
              "children": [],
              "select": false
            },
            {
              "id": 9,
              "createTime": "2021-05-31 18:05:37",
              "updateTime": "2022-06-09 09:22:38",
              "isDeleted": 0,
              "param": {},
              "parentId": 3,
              "name": "删除",
              "type": 2,
              "path": null,
              "component": null,
              "perms": "bnt.sysUser.remove",
              "icon": null,
              "sortValue": 1,
              "status": 1,
              "children": [],
              "select": false
            },
            {
              "id": 18,
              "createTime": "2022-05-23 17:14:32",
              "updateTime": "2022-06-09 09:22:38",
              "isDeleted": 0,
              "param": {},
              "parentId": 3,
              "name": "分配角色",
              "type": 2,
              "path": null,
              "component": null,
              "perms": "bnt.sysUser.assignRole",
              "icon": null,
              "sortValue": 1,
              "status": 1,
              "children": [],
              "select": false
            }
          ],
          "select": false
        },
        {
          "id": 4,
          "createTime": "2021-05-31 18:05:37",
          "updateTime": "2022-06-09 09:37:18",
          "isDeleted": 0,
          "param": {},
          "parentId": 2,
          "name": "角色管理",
          "type": 1,
          "path": "sysRole",
          "component": "system/sysRole/list",
          "perms": "",
          "icon": "el-icon-user-solid",
          "sortValue": 2,
          "status": 1,
          "children": [
            {
              "id": 10,
              "createTime": "2021-05-31 18:05:37",
              "updateTime": "2022-06-09 09:22:38",
              "isDeleted": 0,
              "param": {},
              "parentId": 4,
              "name": "查看",
              "type": 2,
              "path": null,
              "component": null,
              "perms": "bnt.sysRole.list",
              "icon": null,
              "sortValue": 1,
              "status": 1,
              "children": [],
              "select": false
            },
            {
              "id": 11,
              "createTime": "2021-05-31 18:05:37",
              "updateTime": "2022-06-09 09:22:38",
              "isDeleted": 0,
              "param": {},
              "parentId": 4,
              "name": "添加",
              "type": 2,
              "path": null,
              "component": null,
              "perms": "bnt.sysRole.add",
              "icon": null,
              "sortValue": 1,
              "status": 1,
              "children": [],
              "select": false
            },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值