需求:前端需要一个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格式的树形的更多相关文章

  1. jQuery获取JSON格式数据方法

    getJSON方法: jQuery.getJSON(url,data,success(data,status,xhr)) $("button").click(function(){ ...

  2. struts2使用jsp和<s:property>标签获取json格式的返回数据

    struts2使用jsp和<s:property>标签获取json格式的返回数据 1.struts2的action中 return "success"; 2.指向的返回 ...

  3. Android Volley获取json格式的数据

    为了让Android能够快速地访问网络和解析通用的数据格式Google专门推出了Volley库,用于Android系统的网络传输.volley库可以方便地获取远程服务器的图片.字符串.json对象和j ...

  4. 获取json格式字符串的简单方法

    有的时候需要找一些Json格式的字符串,可以打开任意一个网页进入到调试模式,然后看network相关的访问信息,就可以获取到. 比如: 在记笔记的时候,点击保存后,会发出一些请求,然后有相应的相应,任 ...

  5. 获取JSON格式的字符串各个属性对应的值

    {"lastrdtime":1515998187379,"creditbalance":"$5.00","contactmode& ...

  6. JSP获取json格式的数据报错 Uncaught SyntaxError: Unexpected identifier

    后台json字符串是 {"id":"cmdb_ci.`fully_qualified_domain_name`","field":" ...

  7. jQuery中使用Ajax获取JSON格式数据示例代码

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.JSONM文件中包含了关于“名称”和“值”的信息.有时候我们需要读取JSON格式的数据文件,在jQuery中 ...

  8. 获取json格式的数据变成了undefined!?

    今天在做一个简单的登陆功能时,当一切准备就绪,点击登陆时,什么都没发生..然后开始debug,打断点调试,然后发现了这个.向页面传递数据flag是true代表该用户的账号密码验证码等信息正确可以登录, ...

  9. C# 语言如何获取json格式的数据,不用javascript用c#实现。。。

    {'state' : 1,'data':{'list':[{'id': 123, 'name': '诸葛天邪','level': 10,'country': 1,}]}} 比如我要获取里面的 id 该 ...

随机推荐

  1. SQL server存储过程,触发器,游标相关实例

    use MySchool go alter proc P_stu as select AVG(StudentResult)as 平均分 from Result select * from Result ...

  2. 最小生成树(kruskal算法)

    首先明确三个概念: 1.最小生成树的特点? 答:假设某个连通网络由n个顶点组成,则其生成树必含n个顶点和n-1条边,而最小生成树的n-1条有个要求:总和最小. 2.并查集的运用? 答:在该问题中,首先 ...

  3. jenkins+supervisor实现django项目的自动部署(ubuntu)

    没有安装supervisor的话首先安装supervisor, apt install upservisor 安装supervisor大概率会出现问题,不推荐,最好是用pip 安装, 注意python ...

  4. SqlServer如何获取存储过程的返回值

    1.Output参数返回值 1 CREATE PROCEDURE [dbo].[upInformation]( 2 @age int , 3 @id bigint OUTPUT 4 ) 5 AS 6 ...

  5. 7、字典和string的用法

    #dic={1:'alex','age':35,'hobby':{'girl_name':'铁锤','age':45},'is_handsome':True} # dic={'age':'alex', ...

  6. axios formData提交数据 && axios设置charset无效???

    但是这样会出现一个问题,什么问题呢? 我设置了请求头编码utf-8,但是没生效 content-type里面没有出现utf-8???????查了很多资料,说这是axios固有的bug,我....... ...

  7. 20175204 张湲祯 2018-2019-2《Java程序设计》

    Arrays和String单元测试 一.类的作用 1.- String类 charAt String的charAt的作用是将字符串中第i个位置上的字符(从0开始计数)赋值给n,其用法为n=string ...

  8. 正则表达式匹配日期,支持闰年,格式为YYYYMMDD

    年份:[\d]{4} 带31的月份:(0[13578]|1[02])((0[1-9])|([12][0-9])|(3[01])) 非2月不带31日的月份:((0[469])|11)((0[1-9])| ...

  9. memcached单机或热备的安装部署

    一.部署准备 1.安装Java 不建议使用系统默认Open JDK版本,需要手工另行安装.JDK版本建议为1.7+,若Java已安装完毕,则无需重复安装. 安装过程如下: (1)获取JDK安装包: ( ...

  10. WPF 10天修炼 第六天- 系统属性和常用控件

    WPF系统属性和常用控件 渐变的背景色 WPF中的前景色和背景色不同于传统Winform的设置,这些属性都是Brush类型的值.在XAML中,当为这些属性设置指定的颜色后将被转换为SolidColor ...