需求是查询一张分类表,里面的结构是有一个父级id,然后展示的JSON格式是那种树状的层级关系,类似于:
{
"父级id":id
"父级名称":name
“父级编码”:code
“子类数组集合对象”:[
{子类对象1},{子类对象2},......
]
}
我是通过selectAll把全部数据先查询出来,然后通过程序递归来处理,最后把数据组合返回一个List<Map<String, Object>>对象,代码如下:
/**
* 物资分类
* @param wzlbbm
* @return
*/
@Override
public List<Map<String, Object>> wzfl(String wzlbbm) {
/**
* 1.先把全部物资分类全部数据查询出来
*/
List<Wzfl> wzflsList = wzflMapper.selectList(null);
/**
* 2.新建返回对象
*/
List<Map<String, Object>> wzflList = new ArrayList<Map<String, Object>>();
/**
* 3.循环处理全部数据,转为父子级对象
*/
for(Wzfl vo: wzflsList){
Map<String,Object> map = new HashMap<String,Object>(8);
if("0".equals(vo.getFjwzflid())){
map.put("children", getChildren(wzflsList,vo.getWzflid()));
map.put("wzflid", vo.getWzflid());
map.put("wzflmc", vo.getWzflmc());
map.put("fjwzflid", vo.getFjwzflid());
map.put("pyjm", vo.getPyjm());
wzflList.add(map);
}
}
/**
* 4.返回树状父子级分类结果
*/
return wzflList;
}
/**
* 递归处理物资分类父子级关系数据
* @param data 物资分类集合
* @param wzflid 物资分类父类ID
* @return
*
* 业务逻辑说明:
* wzfl()方法里的调用方法
* 1.递归循环遍历,当父级ID和物资分类ID一致,则是父子级关系
* 2.把子类对象放入到父级的children集合里
*/
public List<Map<String, Object>> getChildren(List<Wzfl> data,String wzflid){
/**
* 1.对数据校验处理
*/
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
if(data==null||data.size()==0||wzflid==null){
return list;
}
/**
* 2.遍历匹配父子级关系数据
*/
for(Wzfl vo:data ){
Map<String,Object> map = new HashMap<String,Object>(8);
if(wzflid.toString().equals(vo.getFjwzflid())){
map.put("children", getChildren(data,vo.getWzflid()));
map.put("wzflid", vo.getWzflid());
map.put("wzflmc", vo.getWzflmc());
map.put("fjwzflid", vo.getFjwzflid());
map.put("pyjm", vo.getPyjm());
list.add(map);
}
}
/**
* 3.返回处理后的结果对象
*/
return list;
}
JSON数据结果返回如下:
{
"code": 0,
"msg": "成功",
"data": [
{
"wzflmc": "一次性卫生材料",
"pyjm": null,
"wzflid": "1",
"fjwzflid": "0",
"children": [
{
"wzflid": "3",
"children": [
{
"wzflid": "4",
"children": [],
"wzflmc": "儿童一次性口罩",
"pyjm": null,
"fjwzflid": "3"
},
{
"wzflid": "5",
"children": [],
"wzflmc": "成人一次性口罩",
"pyjm": null,
"fjwzflid": "3"
}
],
"wzflmc": "一次性医用口罩",
"pyjm": null,
"fjwzflid": "1"
}
]
},
{
"wzflmc": "办公用品",
"pyjm": null,
"wzflid": "2",
"fjwzflid": "0",
"children": []
}
]
}
参考文章来自于:https://blog.csdn.net/qq_39177224/article/details/84099382