springmvc+mybatis 无极限树形结构菜单

MYSQL数据库



查出数据调用封装类

	List<Menu> menulist = new ArrayList<Menu>();
		menulist = menuService.menuList();
		MenuTree menuTree = new MenuTree();
		System.out.println(menuTree.menuList(menulist));

树形结构封装类

package com.sdmc.util;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import com.sdmc.bean.Menu;

public class MenuTree {
	
	
	public static Map<String,Object> mapArray = new LinkedHashMap<String, Object>();
	public List<Menu> menuCommon;
	public List<Object> list = new ArrayList<Object>();
	
	public List<Object> menuList(List<Menu> menu){    
		this.menuCommon = menu;
		for (Menu x : menu) {   
			Map<String,Object> mapArr = new LinkedHashMap<String, Object>();
			if(x.getPid()==0){
				mapArr.put("id", x.getId());
				mapArr.put("name", x.getName());
				mapArr.put("level", x.getLevel());
				mapArr.put("pid", x.getPid());	
				mapArr.put("child", menuChild(x.getId()));	
				list.add(mapArr);
			}
		}	
		return list;
	}
	
	
	public List<?> menuChild(int id){
		List<Object> lists = new ArrayList<Object>();
		for(Menu a:menuCommon){
			Map<String,Object> childArray = new LinkedHashMap<String, Object>();
			if(a.getPid() == id){
				childArray.put("id", a.getId());
				childArray.put("name", a.getName());
				childArray.put("level", a.getLevel());
				childArray.put("pid", a.getPid());
				childArray.put("child", menuChild(a.getId()));	
				lists.add(childArray);
			}
		}
		return lists;
		
	}
}


结果

[{id=1, name=内容管理, level=1, pid=0, 
	child=[{id=6, name=栏目管理, level=2, pid=1, 
		child=[{id=17, name=管理内容, level=3, pid=6, 
			child=[{id=11, name=业务管理, level=4, pid=17, child=[]}]}]},
		{id=7, name=模型管理, level=2, pid=1, child=[]}]},
{id=2, name=用户管理, level=1, pid=0, child=[{id=10, name=会员管理, level=2, pid=2, child=[]}]}
]




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值