因为需要用到树形行政区域,以往都是反复查询数据库拼接JSON字符串,现在找到一个更好的方法:
1、建一个接口
public interface TreeNode<T> {
public String getId();
public String getParentId();
public List<T> getChildren();
public void setChildren(List<T> children);
}
2、implements
@Override
public String getId() {
return this.getStr("id");
}
@Override
public String getParentId() {
return this.getStr("parent_id");
}
@Override
public List<Area> getChildren() {
return this.get("children");
}
@Override
public void setChildren(List<Area> children) {
this.put("children", children);
}
public List<Area> findAllArea() {
return dao.findAll();
}
3、Service
public List<Area> findAll() {
List<Area> areaList = Area.dao.findAllArea();
List<Area> nodeList = new ArrayList<Area>();
for (Area node1 : areaList) {
boolean mark = false;
for (Area node2 : areaList) {
if (node1.getParentId() != null && node1.getParentId().equals(node2.getId())) {
mark = true;
if (node2.getChildren() == null)
node2.setChildren(new ArrayList<Area>());
node2.getChildren().add(node1);
break;
}
}
if (!mark) {
nodeList.add(node1);
}
}
return nodeList;
}