利用for循环,完成二级菜单

来源:互联网 发布:go并发编程实战完整版 编辑:程序博客网 时间:2024/04/30 13:28

二级菜单是每个javaweb项目中都会使用到的,今天总结下我这次的做法。

一级菜单的PARENT_ID均为0,二级菜单的PARENT_ID是一级菜单的MENU_ID,如下图所示:


我把一级菜单和二级菜单放到了一起,所以一条SQL没办法查询出嵌套的如下所示的格式,

"data": {
            "sons": [
                {
                    "MENU_TYPE": null,
                    "MENU_URL": null,
                    "MENU_KEY": null,
                    "MENU_ID": 6,
                    "MENU_STATE": null,
                    "MENU_NAME": "户籍信息",
                    "MENU_ORDER": "1",
                    "MENU_ICON": null,
                    "PARENT_ID": 1
                }
            ],
            "parentdata": {
                "MENU_TYPE": null,
                "MENU_URL": "#",
                "MENU_KEY": null,
                "MENU_ID": 1,
                "MENU_STATE": null,
                "MENU_NAME": "人口",
                "MENU_ORDER": "1",
                "MENU_ICON": null,
                "PARENT_ID": 0
            }
        }

只能在java里面处理了,我使用到了PageData其实本质就是Map,使用到了双重for循环进行处理,代码如下:

@RequestMapping(value = "datamanager/menulist", produces = "application/json;charset=UTF-8")
@ResponseBody
public String yeardeathCount() {
List<PageData> list = null;
List<PageData> listparent=new ArrayList<>();
PageData datas=new PageData();
PageData pd = new PageData();
pd = this.getPageData();
try {
list = datamanagerService.listMenu(pd);//查询到一级菜单和二级菜单的集合
for(PageData pdata:list){
if(Integer.valueOf(pdata.get("PARENT_ID").toString())==0){//先将一级菜单装到一个集合
listparent.add(pdata);
}
}
for(int i=0;i<listparent.size();i++){//外层循环查一级菜单
PageData data=new PageData();
PageData parentdata=listparent.get(i);
List<PageData> sons=new ArrayList<>();//用来装二级菜单的集合
list.removeAll(listparent);//去除一级菜单只剩二级菜单
for(PageData pdata:list){
   //将同属一级菜单的二级菜单装到一个集合中
if(Integer.valueOf(parentdata.get("MENU_ID").toString())==Integer.valueOf(pdata.get("PARENT_ID").toString())){
sons.add(pdata);
}else{
continue;
}
}//将一级菜单和二级菜单放到map中
data.put("parentdata",parentdata);
data.put("sons", sons);
datas.put("data"+i, data);
}
return JSONUtil.JsonString(new JsonResult( 1, "成功!", datas));
} catch (Exception e) {
// TODO: handle exception
logger.error("错误:" + e.toString(), e);
return JSONUtil.toJsonString(new JsonResult(-1, "失败:服务器内部错误!", null));
}
}

返回给前端的json如下:

{
    "code": 1,
    "message": "成功!",
    "rows": {
        "data4": {
            "sons": [
                {
                    "MENU_TYPE": null,
                    "MENU_URL": null,
                    "MENU_KEY": null,
                    "MENU_ID": 10,
                    "MENU_STATE": null,
                    "MENU_NAME": "地址点",
                    "MENU_ORDER": "1",
                    "MENU_ICON": null,
                    "PARENT_ID": 5
                },
                {
                    "MENU_TYPE": null,
                    "MENU_URL": null,
                    "MENU_KEY": null,
                    "MENU_ID": 11,
                    "MENU_STATE": null,
                    "MENU_NAME": "兴趣点",
                    "MENU_ORDER": "2",
                    "MENU_ICON": null,
                    "PARENT_ID": 5
                },
                {
                    "MENU_TYPE": null,
                    "MENU_URL": null,
                    "MENU_KEY": null,
                    "MENU_ID": 12,
                    "MENU_STATE": null,
                    "MENU_NAME": "单元点",
                    "MENU_ORDER": "3",
                    "MENU_ICON": null,
                    "PARENT_ID": 5
                },
                {
                    "MENU_TYPE": null,
                    "MENU_URL": null,
                    "MENU_KEY": null,
                    "MENU_ID": 13,
                    "MENU_STATE": null,
                    "MENU_NAME": "小区界线",
                    "MENU_ORDER": "4",
                    "MENU_ICON": null,
                    "PARENT_ID": 5
                }
            ],
            "parentdata": {
                "MENU_TYPE": null,
                "MENU_URL": "#",
                "MENU_KEY": null,
                "MENU_ID": 5,
                "MENU_STATE": null,
                "MENU_NAME": "地名地址",
                "MENU_ORDER": "5",
                "MENU_ICON": null,
                "PARENT_ID": 0
            }
        },
        "data3": {
            "sons": [
                {
                    "MENU_TYPE": null,
                    "MENU_URL": null,
                    "MENU_KEY": null,
                    "MENU_ID": 8,
                    "MENU_STATE": null,
                    "MENU_NAME": "行政区界线_社区/村",
                    "MENU_ORDER": "1",
                    "MENU_ICON": null,
                    "PARENT_ID": 4
                },
                {
                    "MENU_TYPE": null,
                    "MENU_URL": null,
                    "MENU_KEY": null,
                    "MENU_ID": 9,
                    "MENU_STATE": null,
                    "MENU_NAME": "行政区界线_街道/乡镇",
                    "MENU_ORDER": "2",
                    "MENU_ICON": null,
                    "PARENT_ID": 4
                }
            ],
            "parentdata": {
                "MENU_TYPE": null,
                "MENU_URL": "#",
                "MENU_KEY": null,
                "MENU_ID": 4,
                "MENU_STATE": null,
                "MENU_NAME": "行政区划",
                "MENU_ORDER": "4",
                "MENU_ICON": null,
                "PARENT_ID": 0
            }
        },
        "data2": {
            "sons": [],
            "parentdata": {
                "MENU_TYPE": null,
                "MENU_URL": "#",
                "MENU_KEY": null,
                "MENU_ID": 3,
                "MENU_STATE": null,
                "MENU_NAME": "法人",
                "MENU_ORDER": "3",
                "MENU_ICON": null,
                "PARENT_ID": 0
            }
        },
        "data1": {
            "sons": [
                {
                    "MENU_TYPE": null,
                    "MENU_URL": null,
                    "MENU_KEY": null,
                    "MENU_ID": 7,
                    "MENU_STATE": null,
                    "MENU_NAME": "困难家庭",
                    "MENU_ORDER": "1",
                    "MENU_ICON": null,
                    "PARENT_ID": 2
                }
            ],
            "parentdata": {
                "MENU_TYPE": null,
                "MENU_URL": "#",
                "MENU_KEY": null,
                "MENU_ID": 2,
                "MENU_STATE": null,
                "MENU_NAME": "帮扶",
                "MENU_ORDER": "2",
                "MENU_ICON": null,
                "PARENT_ID": 0
            }
        },
        "data0": {
            "sons": [
                {
                    "MENU_TYPE": null,
                    "MENU_URL": null,
                    "MENU_KEY": null,
                    "MENU_ID": 6,
                    "MENU_STATE": null,
                    "MENU_NAME": "户籍信息",
                    "MENU_ORDER": "1",
                    "MENU_ICON": null,
                    "PARENT_ID": 1
                }
            ],
            "parentdata": {
                "MENU_TYPE": null,
                "MENU_URL": "#",
                "MENU_KEY": null,
                "MENU_ID": 1,
                "MENU_STATE": null,
                "MENU_NAME": "人口",
                "MENU_ORDER": "1",
                "MENU_ICON": null,
                "PARENT_ID": 0
            }
        }
    }
}

到此就完成了。

原创粉丝点击