实现三级联动数据的java代码、源数据格式、json示例

递归不太熟练,就用笨办法写的,需要有如下格式的sql格式才行,

java代码:

@RequestMapping(value = "xxxxx")
	@ResponseBody
	public LinkedList<LinkedHashMap> getjson() {
		//拿到数据,Data为实体类,下面附有示例,获取数据直接select * from xxx;
		List<Data> Data = xxxxxMapper.getData();
		//第一层
		String pid = "0";
		LinkedList<LinkedHashMap> list = new LinkedList<>();
		for (Datacity : Data) {
			if(pid.equals(city.getPid())) {
				LinkedHashMap<String, Object> Map = new LinkedHashMap<>();
				Map.put("name", city.getName());
				LinkedList<LinkedHashMap> list2 = new LinkedList<>();
				Map.put("sub", list2);
				list.add(Map);
				
				//第二层
				for (Data city2 : Data) {
					if(city.getCid().equals(city2.getPid())) {
						LinkedHashMap<String, Object> Map2 = new LinkedHashMap<>();
						Map2.put("name", city2.getName());
						LinkedList<LinkedHashMap> list3 = new LinkedList<>();
						Map2.put("sub", list3);
						list2.add(Map2);
						
						
						//第三层
						for (Data city3 : Data) {
							if(city2.getCid().equals(city3.getPid())) {
								LinkedHashMap<String, Object> Map3 = new LinkedHashMap<>();
								Map3.put("name", city3.getName());
								list3.add(Map3);
							}
						}
						
					}
				}
				
					
				
			}
		}
		return list;
	}

实体类格式:

public class Data {
	private String name ;
	private String cid;
	private String pid;
	@JSONField(serialize = false)
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@JSONField(serialize = false)
	public String getPid() {
		return pid;
	}
	public void setPid(String pid) {
		this.pid = pid;
	}
	public String getCid() {
		return cid;
	}
	public void setCid(String cid) {
		this.cid = cid;
	}
	
}

mysql源数据格式:
只有三个字段
json示例:

[{
	"name": "金融服务人员",
	"code": "金融服务人员",
	"sub": [{
		"name": "银行服务人员",
		"code": "银行服务人员",
		"sub": [{
			"name": "银行综合柜员",
			"code": "银行综合柜员"
		}, {
			"name": "银行信贷员",
			"code": "银行信贷员"
		}, {
			"name": "银行客户业务员",
			"code": "银行客户业务员"
		}, {
			"name": "银行信用卡业务员",
			"code": "银行信用卡业务员"
		}]
	}]
}]
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值