您的位置:首页 > 其它

N级菜单递归查询

2015-08-07 11:15 169 查看
/** 将所有菜单组装成树
* @param classDTOList  数据库查询出来的所有菜单
*        菜单列表
* @return List<ClassDTO>
*/
private List<ClassDTO> assembleClassTree(List<ClassDTO> classDTOList) {
List<ClassDTO> classTreeList = null;

if(CommonUtils.listNotNull(classDTOList)){
classTreeList = new ArrayList<ClassDTO>();

for(ClassDTO classDTO1 : classDTOList){
if(classDTO1.isLevel1()){
this.setChildClass(classDTO1, classDTOList);
classTreeList.add(classDTO1);
}
}
}

return classTreeList;
}

/** 通过递归的方法组装菜单树
* @param classDTO
* @param classDTOList
* @return
*/
private void setChildClass(ClassDTO parentClassDTO, List<ClassDTO> classDTOList) {
List<ClassDTO> childClassList = parentClassDTO.getChildList();

if(childClassList == null) {
childClassList = new ArrayList<ClassDTO>();
parentClassDTO.setChildList(childClassList);
}

for(ClassDTO childClassDTO : classDTOList ){
if(parentClassDTO.getIdClass().equals(childClassDTO.getIdParentClass())){
childClassList.add(childClassDTO);
this.setChildClass(childClassDTO, classDTOList);
}
}
}

  


  

/** 通过递归的方法取得parentId下的子集合
* @param parentId 父级Id
* @param allClassTree 菜单树状 集合
* @return
*/
private List<ClassDTO> getChildClassByParentId(String parentId, List<ClassDTO> allClassTree) {

for (ClassDTO classDTO : allClassTree) {
//找到parentId, 则返回此板块下的所有子版块集合
if (classDTO.getIdClass().equals(parentId)) {
return classDTO.getChildList();
}
//否则, 继续找
else {
List<ClassDTO> childList = classDTO.getChildList();

if (CommonUtils.listNotNull(childList)) {
childList = this.getChildClassByParentId(parentId, childList);

if (childList != null) {
return childList;
}
else {
continue;
}
}
}
}

return null;
}


  

/**
*  给出一颗树 递归出其下所有叶子节点
* @param allTree  给出的树
* @param leafClassList   叶子节点
* @throws BusinessServiceException
*/
private void loopLeafClassListByTree(List<ClassDTO> allTree, List<ClassDTO> leafClassList){
if(CommonUtils.listNotNull(allTree)){
for (ClassDTO classDTO : allTree) {
if (classDTO.isLeafClass()) {
leafClassList.add(classDTO);
}
else {
List<ClassDTO> childClassList = classDTO.getChildList();
if (CommonUtils.listNotNull(childClassList)) {
this.loopLeafClassListByTree(childClassList, leafClassList);
}
}
}
}
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: