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

最新文章

  1. 解读ASP.NET 5 &amp; MVC6系列(11):Routing路由
  2. iOS 10 :用 UIViewPropertyAnimator 编写动画
  3. 野路子土鳖ASP.NETer谈互联网的发展趋势
  4. js分辨浏览器类别和版本
  5. 【SDOI2008】【P1377】仪仗队
  6. java流布局管理器
  7. How to make 9-patch image downloaded from the Network
  8. 线程初步了解 - &lt;第一篇&gt;
  9. 重新想象 Windows 8 Store Apps (19) - 动画: 线性动画, 关键帧动画, 缓动动画
  10. JAVA MONGODB group查询的UTC时间问题
  11. C++线程安全日志库-Win32接口实现
  12. WebGL&amp;Three.js工作原理
  13. jQuery UI弹出新窗体
  14. 控制WinForm中Tab键的跳转
  15. [AGC 018 E] Sightseeing plan
  16. JavaScript之12306自动刷新车票[待完善]
  17. springboot系列九,springboot整合邮件服务、整合定时任务调度
  18. SQL Server死锁产生原因及解决办法 .
  19. XMind 8 Update 7 Pro 激活码
  20. paypal对接

热门文章

  1. HTML与CSS:结构与表现
  2. Python中实用却不常见的小技巧
  3. java时间日期类(Date、DateFormat、Calendar)学习
  4. Python对wav文件的重采样
  5. 极速认识RSS!
  6. Python数据类型的内置函数之list(列表)
  7. POI导入demo
  8. git 入门与应用
  9. 修改 Vultr 登录密码
  10. hadoop的环境变量