基于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方法结果: