Ztree树形结构

需要的包

<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数据格式

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值