目录
提前准备实体类设置:
package net.mingsoft.basic.entity;
import java.sql.Timestamp;
import java.util.List;
import java.util.Objects;
import org.apache.commons.lang3.StringUtils;
import org.springframework.format.annotation.DateTimeFormat;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import net.mingsoft.base.constant.e.BaseEnum;
import net.mingsoft.base.entity.BaseEntity;
/**
* 模块实体
* @author ms dev group
* @version
* 版本号:100-000-000<br/>
* 创建日期:2012-03-15<br/>
* 历史修订:<br/>
*/
@TableName("model")
public class ModelEntity extends BaseEntity {
private static final long serialVersionUID = 8370243529627954524L;
/**
* 模块的标题
*/
private String modelTitle;
/**
* 发布时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Timestamp modelDatetime;
/**
* 模块父id
*/
private Integer modelId;
/**
* 是否是菜单,数据库字段是model_ismuenu
*/
@TableField(value = "model_ismenu")
private Integer modelIsMenu;
/**
* 选中状态,不参加表结构
*/
@TableField(exist = false)
private int chick;
/**
* 树的深度,不参加表结构
*/
@TableField(exist = false)
private int depth;
/**
* 父级编号集合
* @return
*/
private String modelParentIds;
/**
*
* 获取层级
* @return
*/
public int getDepth() {
if(StringUtils.isNotEmpty(modelParentIds)){
return depth = modelParentIds.split(",").length;
}else {
return depth;
}
}
/**
*
* 设置层级
* @param depth
*/
public void setDepth(int depth) {
this.depth = depth;
}
public Integer getModelIsMenu() {
return modelIsMenu;
}
public void setModelIsMenu(Integer modelIsMenu) {
this.modelIsMenu = modelIsMenu;
}
/**
* 获取modelCode
* @return modelCode
*/
public String getModelCode() {
return modelCode;
}
/**
* 设置modelCode
* @param modelCode
*/
public void setModelCode(String modelCode) {
this.modelCode = modelCode;
}
/**
* 获取modelIcon
* @return modelIcon
*/
public String getModelIcon() {
return modelIcon;
}
/**
* 设置modelIcon
* @param modelIcon
*/
public void setModelIcon(String modelIcon) {
this.modelIcon = modelIcon;
}
/**
* 获取modelUrl
* @return modelUrl
*/
public String getModelUrl() {
return modelUrl;
}
/**
* 设置modelUrl
* @param modelUrl
*/
public void setModelUrl(String modelUrl) {
this.modelUrl = modelUrl;
}
/**
* 获取modelDatetime
* @return modelDatetime
*/
public Timestamp getModelDatetime() {
return modelDatetime;
}
/**
* 设置modelDatetime
* @param modelDatetime
*/
public void setModelDatetime(Timestamp modelDatetime) {
this.modelDatetime = modelDatetime;
}
/**
* 获取modelTitle
* @return modelTitle
*/
public String getModelTitle() {
return modelTitle;
}
/**
* 设置modelTitle
* @param modelTitle
*/
public void setModelTitle(String modelTitle) {
this.modelTitle = modelTitle;
}
public Integer getModelSort() {
return modelSort;
}
public void setModelSort(Integer modelSort) {
this.modelSort = modelSort;
}
public List<ModelEntity> getModelChildList() {
return modelChildList;
}
public void setModelChildList(List<ModelEntity> modelChildList) {
this.modelChildList = modelChildList;
}
public int getChick() {
return chick;
}
public void setChick(int chick) {
this.chick = chick;
}
public String getModelParentIds() {
return modelParentIds;
}
public void setModelParentIds(String modelParentIds) {
this.modelParentIds = modelParentIds;
}
/**
* 获取菜单类型
*/
public String getIsChild() {
return isChild;
}
/**
* 设置菜单类型
*/
public void setIsChild(String isChild) {
this.isChild = isChild;
}
public Integer getModelId() {
return modelId;
}
public void setModelId(Integer modelId) {
this.modelId = modelId;
}
public enum IsMenu implements BaseEnum{
NO(0),
YES(1);
private int id;
IsMenu(int id){
this.id = id;
}
@Override
public int toInt() {
// TODO Auto-generated method stub
return this.id;
}
}
@Override
public boolean equals(Object o) {
if (o == null) {
return false;
}
return this.id.equals(((ModelEntity)o).getId());
}
@Override
public int hashCode() {
return Objects.hash(id);
}
}
/**
* 用于返回index页的树形菜单
*/
public class MenuModelEntity extends ModelEntity {
private static final long serialVersionUID = -8018058948896773795L;
/**
* 子菜单 主要需要添加的就是这个子类
*/
private List<MenuModelEntity> childMenus;
public List<MenuModelEntity> getChildMenus() {
return childMenus;
}
public void setChildMenus(List<MenuModelEntity> childMenus) {
this.childMenus = childMenus;
}
}
一:查询所有的数据(表中数据一定要符合树形结构)
List<ModelEntity> modelList = xxxService.getList(token);//这里这是查询一个列表数据
二:组装根数据
List<MenuModelEntity> menuList = Lists.newArrayList();//菜单的数据
for (MenuModelEntity modelEntity : menuAll) {
if (modelEntity.getModelId() == null) {//根级菜单(我的根节点这个字段是null)
menuList.add(modelEntity);
}
}
三:拼接子类数据
//给根节点菜单拼接子数据
for (MenuModelEntity menuModelEntity : menuList) {
menuModelEntity.setChildMenus(
getChild(Integer.parseInt(menuModelEntity.getId()), menuAll));
}
/**
* 菜单生成树形
*
* @param id 父级id
* @param rootMenu 第一步查询到的所有的数据
* @return
*/
public static List<MenuModelEntity> getChild(Integer id, List<MenuModelEntity>
rootMenu) {
// 子菜单
List<MenuModelEntity> childList = new ArrayList<>();
for (MenuModelEntity menu : rootMenu) {
// 遍历所有节点,将父菜单id与传过来的id比较
if (menu.getModelId() != null && menu.getModelId().equals(id) && !menu.getId().equals("1768")) {
childList.add(menu);
}
}
// 判断递归结束
if (childList.size() == 0) {
return null;
}
// 把子菜单的子菜单再循环一遍
for (MenuModelEntity menu : childList) {
menu.setChildMenus(getChild(Integer.parseInt(menu.getId()), rootMenu));// 递归
}
return childList;
}