private int iLength=0;
/**
* 用递归方式实现无限级联
* @return
*
* |第一层
* |—第二层
* |—|—第三层
*/
public JSONArray getAll() {
LinkedHashMap mapDepart = new LinkedHashMap();
LinkedHashMap departList = getNode("0010aae53b864f7ca440811a37716cc6",mapDepart);
//将linkedHashMap转化为json对象
JSONArray jsonArray = new JSONArray();
for (String key : departList.keySet()) {
JSONObject json = new JSONObject();
json.put("ids", key);
json.put("departName", departList.get(key));
jsonArray.add(json);
}
//返回jsonarray
return jsonArray;
}
//按照层数生成"|—"
private String genHeng(int iLength){
String sHeng = "";
for (int i = 0; i < iLength; i++) {
sHeng+="|—";
}
return sHeng;
}
//利用递归生成无限级联的树形结构
private LinkedHashMap getNode(String parentIds,LinkedHashMap mapDepart){
Depart depart = Depart.dao.findById(parentIds);
mapDepart.put(depart.getIds(), genHeng(iLength)+depart.getDepartName());
List listDepart = Db.find("Select * from depart where pDepartIds=?",parentIds);
//有父节点为parentIds的子节点
for (Record record : listDepart) {
iLength++;
mapDepart.put(record.getStr(Depart.column_ids), genHeng(iLength)+record.getStr(Depart.column_departName));
getNode(record.getStr(Depart.column_ids), mapDepart);
iLength--;
}
return mapDepart;
}
数据表depart结构是 ids,departName,pDepartIds