java 数据库 树_java获取数据库数据实现树形结构

1.后端框架:struts2

2.mysql数据库的部门表结构:

dbb35395bc29

image.png

3.最终实现效果

dbb35395bc29

image.png

4.通过jpa生成实体类

dbb35395bc29

image.png

5.编写MenuVo

private int id;//菜单id

private String menuname;//菜单名称

private String menuurl;//菜单url,只有子菜单有url

private Integer menucode;//父菜单节点id

private Integer leaf;//是否有子菜单,0:无,1:有

private List children;//子菜单集合

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getMenuname() {

return menuname;

}

public void setMenuname(String menuname) {

this.menuname = menuname;

}

public String getMenuurl() {

return menuurl;

}

public void setMenuurl(String menuurl) {

this.menuurl = menuurl;

}

public Integer getMenucode() {

return menucode;

}

public void setMenucode(Integer menucode) {

this.menucode = menucode;

}

public Integer getLeaf() {

return leaf;

}

public void setLeaf(Integer leaf) {

this.leaf = leaf;

}

public List getChildren() {

return children;

}

public void setChildren(List children) {

this.children = children;

}

5.编写接口

解决思路:

1、先获取当前部门的所有父级节点,

2、再获取当前部门的所有子节点,

3、查询组合(父级节点、当前节点、子节点组合起来)后的节点数据

4、在java中进行遍历生成树形菜单

接口代码MenuAction

package action;

import bean.Menu;

import com.opensymphony.xwork2.ActionSupport;

import java.util.ArrayList;

import java.util.List;

import javax.persistence.EntityManager;

import javax.persistence.EntityManagerFactory;

import javax.persistence.Persistence;

import untity.MenuVo;

public class MenuAction extends ActionSupport {

private List rows = new ArrayList<>();

private Boolean success;

private String msg;

public String list() {

EntityManagerFactory emf = Persistence.createEntityManagerFactory("studyPU");

EntityManager em = emf.createEntityManager();

rows=findFather();

success = true;

em.close();

emf.close();

return SUCCESS;

}

//获取父类菜单

public List findFather() {

EntityManagerFactory emf = Persistence.createEntityManagerFactory("studyPU");

EntityManager em = emf.createEntityManager();

List menuVoList = new ArrayList<>();

List

for (Menu menu : menuList) {

if (menu.getLeaf() == 1) {

MenuVo menuVo = new MenuVo();

menuVo.setId(menu.getId());

menuVo.setMenuname(menu.getMenuname());

menuVo.setMenuurl(menu.getMenuurl());

menuVo.setMenucode(menu.getMenucode());

menuVo.setLeaf(menu.getLeaf());

menuVo.setChildren(null);

menuVoList.add(menuVo);

}

}

//传进父级ID,查找其子部门

for (MenuVo menuVo : menuVoList) {

menuVo.setChildren(findChild(menuVo.getId(), menuList));

}

return menuVoList;

}

//获取父类菜单下的字类菜单

public List findChild(int id, List

List childList = new ArrayList<>();

for (Menu menu : menuList) {

int menucode = 0;

if (menu.getMenucode() != null) {

menucode = menu.getMenucode();

}

int leaf = menu.getLeaf();

if (leaf == 0) {

if (id == menucode) {

MenuVo menuVo = new MenuVo();

menuVo.setId(menu.getId());

menuVo.setMenuname(menu.getMenuname());

menuVo.setMenuurl(menu.getMenuurl());

menuVo.setMenucode(menu.getMenucode());

menuVo.setLeaf(menu.getLeaf());

childList.add(menuVo);

}

}

}

return childList;

}

public List getRows() {

return rows;

}

public void setRows(List rows) {

this.rows = rows;

}

public Boolean getSuccess() {

return success;

}

public void setSuccess(Boolean success) {

this.success = success;

}

public String getMsg() {

return msg;

}

public void setMsg(String msg) {

this.msg = msg;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值