需要的包
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/statics/tree/css/metroStyle/metroStyle.css"> <script src="${pageContext.request.contextPath}/statics/tree/js/jquery.ztree.core.min.js" type="text/javascript" charset=utf-8></script> <script src="${pageContext.request.contextPath}/statics/tree/js/jquery.ztree.excheck.min.js" type="text/javascript" charset=utf-8></script> <script src="${pageContext.request.contextPath}/statics/tree/js/jquery.ztree.all.min.js" type="text/javascript" charset=utf-8></script>
html
<ul id="tree" class="ztree"></ul>
jquery
function getTree(){ $.getJSON("getTree",function(response){ var zTree = $.fn.zTree.init($("#tree"),settingss,response) zTree.expandAll(true) }) } var settingss ={} $(function (){ //生成树 getTree() })
Controller/** * 树形结构控制层 */ @RestController public class TreeController { @Autowired private ProjectService service; @RequestMapping("getTree") public List<TreeNode> getTree(){ return service.getTree(); }
Service@Autowired private ProjectMapper mapper; @Override public List<TreeNode> getTree() { //待处理数据集合 List<Project> projectList = mapper.getProjectList(); //预保存树结构集合 List<TreeNode> treeNodes = new ArrayList<>(); for (Project project : projectList) { TreeNode treeNode = new TreeNode(); //将查出的数据和树形结构的属性对应赋值 treeNode.setId(project.getBmDm()); treeNode.setParentId(project.getXmDm()); if (project.getBmDm().length() == 3) { treeNode.setName(project.getBmName()); } if (project.getBmDm().length() > 3) { treeNode.setName(project.getXmName()); } //赋值好的树结构对象保存到树结构集合中 treeNodes.add(treeNode); } //通过工具类处理成树形结构集合 treeNodes = TreeUtil.build(treeNodes, "0"); return treeNodes; }
Service接口
/** * 将项目数据转换成树形结构json * @return */ List<TreeNode> getTree();
树形模型类
package com.wc.tree; import java.util.List; /** * 数结构模型类 */ public class TreeNode { // 树节点ID private String id; // 树节点名称 private String name; // 树节点编码 private String code; // 树节点链接 private String linkUrl; // 树节点图标 private String icon; // 父节点ID private String parentId; private List<TreeNode> children; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getLinkUrl() { return linkUrl; } public void setLinkUrl(String linkUrl) { this.linkUrl = linkUrl; } public String getIcon() { return icon; } public void setIcon(String icon) { this.icon = icon; } public String getParentId() { return parentId; } public void setParentId(String parentId) { this.parentId = parentId; } public List<TreeNode> getChildren() { return children; } public void setChildren(List<TreeNode> children) { this.children = children; } @Override public String toString() { return "TreeNode{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", code='" + code + '\'' + ", linkUrl='" + linkUrl + '\'' + ", icon='" + icon + '\'' + ", parentId='" + parentId + '\'' + ", children=" + children + '}'; } }
树形工具类
package com.wc.util; import com.wc.tree.TreeNode; import java.util.ArrayList; import java.util.List; /** * @Description: 树工具类 * @Author: * @CreateDate: 10:00 10:00 * @UpdateDate: 10:00 10:00 * @UpdateRemark: 修改内容 * @Version: 1.0 */ public class TreeUtil { /** * 树构建 * @param treeNodes * @param parentId * @return */ public static List<TreeNode> build(List<TreeNode> treeNodes, String parentId){ List<TreeNode> finalTreeNodes = new ArrayList<>(); for(TreeNode treeNode : treeNodes){ if(parentId.equals(treeNode.getParentId())){ finalTreeNodes.add(treeNode); innerBuild(treeNodes,treeNode); } } return finalTreeNodes; } /** * 递归查找子节点 * @param treeNodes * @param parentNode */ private static void innerBuild(List<TreeNode> treeNodes,TreeNode parentNode){ for(TreeNode childNode : treeNodes){ if(parentNode.getId().equals(childNode.getParentId())){ List<TreeNode> children = parentNode.getChildren(); if(children == null){ children = new ArrayList<>(); parentNode.setChildren(children); } children.add(childNode); innerBuild(treeNodes,childNode); } } } }
项目类(数据类没其他要求但是当前id和pid必须要一一对应)
private String bmDm;//id private String xmDm;//pid
dao层就是直接查询数据返回一个list集合即可
json数据格式