查询菜单树,子类ID 与父类PId一样的情况,比for循环效率高100倍

public List

queryUserPostTaskMenu(HttpServletRequest request, HttpServletResponse response,
String comCode, String gradeCode, String userCode) throws Exception {
BLSystemPostFacade bLSystemPostFacad = new BLSystemPostFacade();
List menus = bLSystemPostFacad.queryUserPostTaskMenu(comCode, gradeCode, userCode);
Map<String, menu> menuTreeDTOMap = new HashMap<String, menu>();
List menuTreeList = new ArrayList ();
for (menu menu : menus) {
menu menuTreeDTO = new menu ();
menuTreeDTO.setTaskName(menu.getTaskName());
menuTreeDTO.setTaskCode(menu.getTaskCode());
menuTreeDTO.setParentCode(menu.getParentCode());
String parentMenuId = menu.getParentCode();
if (parentMenuId != null && !"".equals(parentMenuId)) {
UtiTaskDto parentMenuTreeDTO = menuTreeDTOMap.get(parentMenuId);
if (parentMenuTreeDTO != null) {
List children = parentMenuTreeDTO.getChildList();
if (children == null) {
children = new ArrayList ();
children.add(menuTreeDTO);
parentMenuTreeDTO.setChildList(children);
} else {
children.add(menuTreeDTO);
}
}
} else {
menuTreeList.add(menuTreeDTO);
}
menuTreeDTOMap.put(menu.getTaskCode(), menuTreeDTO);

	}

	return menuTreeList;
}

bao 层:

select *
(SELECT T.TASKCODE,
CASE
WHEN T.TASKCODE = T.PARENTCODE THEN
‘’
ELSE
T.PARENTCODE
END AS PARENTCODE,
T.TASKNAME,
T.REMARK,
T.FLAG
FROM MENU T + 筛选条件 )TEMP
START WITH TEMP.TASKCODE = ’ ’
CONNECT BY PRIOR TEMP.TASKCODE = TEMP.PARENTCODE order by TEMP.TASKCODE ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值