当前位置: 代码迷 >> Web前端 >> 无限级菜单查询打包
  详细解决方案

无限级菜单查询打包

热度:32   发布时间:2013-08-11 22:22:29.0
无限级菜单查询封装
-- 无限级菜单查询
  SELECT A.MENU_ID,                --菜单ID
               LEVEL AS NODES,   --菜单节点
               A.MENU_NAME,      --菜单名称
               A.MENU_PAREDNT_ID,--菜单父ID
               A.MENU_URL,       --菜单url
               A.ORDER_NO        --排序号
          FROM (SELECT B.MENU_ID,
                       B.MENU_NAME,
                       B.MENU_PAREDNT_ID,
                       B.MENU_URL,
                       B.ORDER_NO
                  FROM MENU B
                 WHERE 1 = 1) A
        CONNECT BY A.MENU_PAREDNT_ID = PRIOR A.MENU_ID
         START WITH A.MENU_PAREDNT_ID IS NULL
 

  List returnList = "" // 这个list是通过SQL查询出来的结果集
  List oneList = new ArrayList(); // 一级菜单List
  Map twoMap = new HashMap();     // 二级菜单MAP
  Map threeMap = new HashMap();   // 三级菜单MAP
 
  // 封装成一个三级菜单的集合MAP
  for (Object object : returnList) {
   LazyDynaBean bean = (LazyDynaBean)object;
   if ("1".equals(ObjectUtils.toString(bean.get("NODES")))){ // 判断该节点是否一级菜单
    oneList.add(bean.getMap());
   } else if ("2".equals(ObjectUtils.toString(bean.get("NODES")))) { // 判断该节点是否二级菜单
    List tempList = (List)twoMap.get(ObjectUtils.toString(bean.get("MENU_PAREDNT_ID")));
    if(tempList == null){
     tempList = new ArrayList();
    }
    tempList.add(bean.getMap());
    twoMap.put(ObjectUtils.toString(bean.get("MENU_PAREDNT_ID")), tempList);
   } else if ("3".equals(ObjectUtils.toString(bean.get("NODES")))) {// 判断该节点是否三级菜单
    List tempList = (List)threeMap.get(ObjectUtils.toString(bean.get("MENU_PAREDNT_ID")));
    if(tempList == null){
     tempList = new ArrayList();
    }
    tempList.add(bean.getMap());
    threeMap.put(ObjectUtils.toString(bean.get("MENU_PAREDNT_ID")), tempList);
   }
  }

  // 解析封装的数据
  for(Object object : oneList) { // 一级菜单
   Map oneMapNodes = (Map)object;
   List twoListNodes = (List)twoMap.get(oneMapNodes.get("MENU_ID"));
   if (twoListNodes!=null && twoListNodes.size()>0) {
    for (Object twoobject : twoListNodes) { // 二级菜单
     Map twoMapNodes= (Map)twoobject;
    }
   }
  }
  相关解决方案