menbbo

导航

 

基于springboot的SSM框架实现返回easyui-tree所需要数据。

1.easyui-tree

easui-tree目所需要的数据结构类型如下:

[
  {
    "children": [
      {
        "children": [],
        "id": "0101",
        "text": "部门1-1"
      }
    ],
    "id": "01",
    "text": "部门1"
  },
  {
    "children": [
      {
        "children": [],
        "id": "0201",
        "text": "部门2-1"
      }
    ],
    "id": "02",
    "text": "部门2"
  }
]

从数据内容可以看出,使用递归可以解决此类问题。

2.数据库中的表

3.实体类

public class ParamNodes {
    private String tNo; //行号
    private String nodeNo; //节点编号
    private String nodeName; //节点名称
    private String parentNo; //父节点编号
   getter、setter 方法省略
}

//该类对象用于保存满足向前端页面返回的数据 public class ParamNodesToJsp { private String id;//对应tNo private String text; //对应nameNode private List
<ParamNodesToJsp> children; //用来保存子节点 }

4.mapper映射文件

   <select id="getParamNodesList" parameterType="ParamNodes" resultMap="paramNodes">
        select  NODENO,NODENAME,PARENTNO from PARAM_NODES
        <where>
            <if test="nodeNo!=null">
                NODENO = #{nodeNo}
            </if>
            <if test="parentNo!=null">
               and  PARENTNO = #{parentNo}
            </if>
        </where>
    </select>

5.dao层、service层略

6.controller层

@RestController
@RequestMapping(value = "/parameter")
public class ParametersController {

    @Autowired
    private ParamNodesService paramNodesService;
    @Autowired
    private ParametersService parametersService;
    /**
     * 获得目录树的数据
     */
    @RequestMapping(value="/getDirectoryTree")
    public String getTreeData(){
        ParamNodes paramNodes = new ParamNodes();
        paramNodes.setParentNo("-1");
       List<ParamNodes>root = paramNodesService.getParamNodesList(paramNodes); //获取到根节点
         List<ParamNodesToJsp> rootJsp = new ArrayList<>();
        ParamNodesToJsp paramNodesToJsp = new ParamNodesToJsp();
        if(root.size()>0){
            paramNodesToJsp.setId(root.get(0).getNodeNo());
            paramNodesToJsp.setText(root.get(0).getNodeName());
            rootJsp.add(paramNodesToJsp);
        }
        JSONArray jo = JSONArray.fromObject(buildTree(rootJsp));
        return jo.toString();
    }

    /**
     * 构造目录树结构的json字符串
     * @param root
     * @return 目录树数据 json字符串
     */
    public List<ParamNodesToJsp>buildTree(List<ParamNodesToJsp>root){
        for (int i = 0;i<root.size();i++){
            ParamNodes paramNodes = new ParamNodes();
            paramNodes.setParentNo(root.get(i).getId().trim());//使用父节点查找孩子节点
            List<ParamNodes> children = paramNodesService.getParamNodesList(paramNodes);
            List<ParamNodesToJsp> childrenToJsp = new ArrayList<>();
            for (int k=0;k<children.size();k++){
                ParamNodesToJsp paramNodesToJsp = new ParamNodesToJsp(); //将信息保存到childrenTojsp中,便于实现向前端页面返回满足要求的数据。
                paramNodesToJsp.setId(children.get(k).getNodeNo());
                paramNodesToJsp.setText(children.get(k).getNodeName());
                childrenToJsp.add(paramNodesToJsp);
            }
            buildTree(childrenToJsp);
            root.get(i).setChildren(childrenToJsp);
        }
        return root;
    }
}

 

访问controller方法结果:

posted on 2019-03-22 14:25  menbbo  阅读(342)  评论(0编辑  收藏  举报