Java 生成树形菜单

分享一个 树形菜单,一般生成树形菜单都是通过递归遍历,或者 通过 NOSQL 存储
此篇 介绍一个 递归 树形菜单的 工具类
废话不多说 上代码

/** 
* @author  作者 : 小布
* @version 创建时间 : 2019年3月18日 下午3:01:27 
* @explain 类说明 : 树形菜单
*/
public final class TreeUtils {

	  public static Map<String,Object> mapArray2 = new LinkedHashMap<String, Object>(); 
	  public List<MedicineDictionary> menuCommon2; 
	  public List<Object> list2 = new ArrayList<Object>(); 
	    
	  public List<Object> menuList2(List<MedicineDictionary> menu2){   
	    this.menuCommon2 = menu2; 
	    for (MedicineDictionary x : menu2) {   
	      Map<String,Object> mapArr2 = new LinkedHashMap<String, Object>(); 
	      if(x.getFid() == 0 || x.getFid().equals(0)){ 
	        mapArr2.put("id", x.getId()); 
	        mapArr2.put("fid", x.getFid()); 
	        mapArr2.put("name", x.getName()); 
	        mapArr2.put("childList", menuChild2(x.getId()));  
	        list2.add(mapArr2); 
	      } 
	    }   
	    return list2; 
	  } 
	   
	public List<?> menuChild2(Integer id){ 
	    List<Object> lists2 = new ArrayList<Object>(); 
	    for(MedicineDictionary a:menuCommon2){ 
	      Map<String,Object> childArray2 = new LinkedHashMap<String, Object>(); 
	      if(a.getFid() == id || a.getFid().equals(id)){ 
	        childArray2.put("id", a.getId()); 
	        childArray2.put("fid", a.getFid()); 
	        childArray2.put("name", a.getName()); 
	        childArray2.put("childList", menuChild2(a.getId())); 
	        lists2.add(childArray2); 
	      } 
	    } 
	    return lists2; 
	  } 

实体类 也就存储 简单数据

/** 
* @author  作者 : 小布
* @version 创建时间 : 2019年4月29日 下午4:10:20 
* @explain 类说明 : 
*/
public class MedicineDictionary {

	private Integer id;
	private Integer fid;
	private String name;
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public Integer getFid() {
		return fid;
	}
	public void setFid(Integer fid) {
		this.fid = fid;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
}

最后调用,写一个查询所有数据的接口即可

		List<MedicineDictionary> list = mapper.queryAll();//查询所有数据的接口
		TreeUtils tree = new TreeUtils();
		List<Object> menuList = tree.menuList2(list);//menuList 树形JSON

数据库 存储的数据 按照 id fid 的结构存储即可

猜你喜欢

转载自blog.csdn.net/weixin_42118284/article/details/90901685
今日推荐