获取JSON格式的树形
需求:前端需要一个JSON格式的Tree,例如组织机构维护的时候使用到的,需要一次性返回给前端。所以编写了一个算是半通用的查询方法
1、数据库Dao层:
/**
* 根据父ID获取子数据
* @param tableName 表名
* @param pColName 父字段名
* @param pColValue 父字段名的值
* @return
*/
@Override
public List<Map<String, Object>> getList(String tableName, String pColName, String pColValue) {
String sql = "select * from "+tableName+" where "+pColName+"=:pColValue"; Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("pColValue",pColValue);
return getNamedParameterJdbcTemplate().queryForList(sql, paramMap);
}
2、通用Service
/**
* 获取JSONArray
* @param tableName 表名
* @param pColName 父字段名
* @param colName 编号对应字段名
* @param pColValue 父字段名的值
* @return
* @throws Exception
*/
public JSONArray getJSONArray(String tableName, String pColName,String colName,String pColValue) throws Exception{
JSONArray array = new JSONArray(); List<Map<String, Object>> areaList = getList(tableName,pColName,pColValue);
for (Map<String, Object> map : areaList){
String newPvalue = map.get(colName).toString();
Map<String,Object> newMap = MapUtils.transToLowerCase(map);
JSONObject object = JSONObject.parseObject(JSON.toJSONString(newMap));
object.put("children",getAreaArrayByPAreaNo(tableName,pColName,colName,newPvalue));
array.add(object);
}
return array;
} /**
*
* @param tableName
* @param pColName
* @param colName
* @param pColValue
* @return
* @throws IllegalAccessException
*/
List<Map<String,Object>> getAreaArrayByPAreaNo(String tableName, String pColName,String colName, String pColValue) throws IllegalAccessException{
JSONObject object = new JSONObject();
List<Map<String,Object>> list = new ArrayList<>();
JSONArray tmp = new JSONArray();
List<Map<String,Object>> resultList = getList(tableName,pColName,pColValue);
if(resultList != null && resultList.size()>0){
for (Map<String,Object> map : resultList){
String newPvalue = map.get(colName).toString();
Map<String,Object> newMap = MapUtils.transToLowerCase(map);
List<Map<String, Object>> nodeList = getAreaArrayByPAreaNo(tableName,pColName,colName,newPvalue);
if (nodeList != null && nodeList.size()>0) {
newMap.put("children", nodeList);
}
list.add(newMap);
}
} return list;
}
3、Action调用
/**
* 加载行政区划
* @param request
* @return
* @throws Exception
*/
@RequestMapping(value = "/list_area", method = RequestMethod.GET)
@ResponseBody
public ResponseResult listarea(HttpServletRequest request) throws Exception {
String tableName = "BC_AREA";
String pColName = "P_AREA_NO";
String pColValue = "0";
String colName = "AREA_NO"; //获取树形
JSONArray array = commonService.getJSONArray(tableName,pColName,colName,pColValue); return ResultUtil.success(array);
}
最终返回的结果类似:


获取JSON格式的树形的更多相关文章
- jQuery获取JSON格式数据方法
getJSON方法: jQuery.getJSON(url,data,success(data,status,xhr)) $("button").click(function(){ ...
- struts2使用jsp和<s:property>标签获取json格式的返回数据
struts2使用jsp和<s:property>标签获取json格式的返回数据 1.struts2的action中 return "success"; 2.指向的返回 ...
- Android Volley获取json格式的数据
为了让Android能够快速地访问网络和解析通用的数据格式Google专门推出了Volley库,用于Android系统的网络传输.volley库可以方便地获取远程服务器的图片.字符串.json对象和j ...
- 获取json格式字符串的简单方法
有的时候需要找一些Json格式的字符串,可以打开任意一个网页进入到调试模式,然后看network相关的访问信息,就可以获取到. 比如: 在记笔记的时候,点击保存后,会发出一些请求,然后有相应的相应,任 ...
- 获取JSON格式的字符串各个属性对应的值
{"lastrdtime":1515998187379,"creditbalance":"$5.00","contactmode& ...
- JSP获取json格式的数据报错 Uncaught SyntaxError: Unexpected identifier
后台json字符串是 {"id":"cmdb_ci.`fully_qualified_domain_name`","field":" ...
- jQuery中使用Ajax获取JSON格式数据示例代码
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.JSONM文件中包含了关于“名称”和“值”的信息.有时候我们需要读取JSON格式的数据文件,在jQuery中 ...
- 获取json格式的数据变成了undefined!?
今天在做一个简单的登陆功能时,当一切准备就绪,点击登陆时,什么都没发生..然后开始debug,打断点调试,然后发现了这个.向页面传递数据flag是true代表该用户的账号密码验证码等信息正确可以登录, ...
- C# 语言如何获取json格式的数据,不用javascript用c#实现。。。
{'state' : 1,'data':{'list':[{'id': 123, 'name': '诸葛天邪','level': 10,'country': 1,}]}} 比如我要获取里面的 id 该 ...
随机推荐
- java压缩文件或文件夹并导出
java压缩文件或文件夹并导出 tozipUtil: package com.zhl.push.Utils; import java.io.File; import java.io.FileInput ...
- c\c++里struct字节对齐规则
规则一.: 每个成员变量在其结构体内的偏移量都是成员变量类型的大小的倍数. 规则二: 如果有嵌套结构体,那么内嵌结构体的第一个成员变量在外结构体中的偏移量,是内嵌结构体中那个数据类型大小最大的成员 ...
- IDEA (mac版)
mac键:option=alt command=ctrl idea快捷键 command+Enter(get,set界面) command+alt+L (格式化代码) ctrl+shift+space ...
- VS发布网站时,报错提示:“未能将文件xxx复制到xxx,未能找到文件xx”三种解决方案!
发布网站时候大家可能会遇到这样的情况,就是报错提示说:“未能将文件xxx复制到xxx,未能找到文件xx”,这个问题一般来说有三种解决方案,个人倾向第三种,如图: 解决方案如下: 方案一.把系统提示缺失 ...
- Mac os x下几款mysql客户端
Mac os x几款mysql客户端 1,Navicat 这是一款可支持多种数据库的客户端,可支持mysql,sqlite,oracle,sql server等数据库.当然也可以选择只支持某种数据库的 ...
- python(random模块)取10以内的随机数
上面有个selenium-webdriver循环点击百度搜索结果以及获取新页面的handler文章,随机获取百度搜索结果中不同id的结果,实现代码如下: #coding:utf- import ran ...
- Numpy 多维数组简介
 NumPy是一个功能强大的Python库,主要用于对多维数组执行计算.NumPy这个词来源于两个单词-- Numerical和Python.NumPy提供了大量的库函数和操作,可以帮助程序员轻松地 ...
- SQLServer删除重复行
1.如果有ID字段,就是具有唯一性的字段 delect table where id not in ( select max(id) from table group by col1,col2,col ...
- 洛谷P4774 [NOI2018]屠龙勇士 [扩欧,中国剩余定理]
传送门 思路 首先可以发现打每条龙的攻击值显然是可以提前算出来的,拿multiset模拟一下即可. 一般情况 可以搞出这么一些式子: \[ atk_i\times x=a_i(\text{mod}\ ...
- 一个spring mvc 需要用到到文件
一. 类 org.springframework.stereotype.Controller; org.springframework.web.bind.annotation.RequestMappi ...