適用於父子關係的數據結構。
//從數據庫中查找所有地址
@Select("select t.id as addressId,t.address_name as addressName,t.parent_id as parentId from t_equipment_address t")
public List<EquipmentAddressVo> getAllEquipmentAddress();
//工具類
public class TreeUtil {
// RecursiveEquipmentType
public static List<EquipmentAddressVo> RecursiveAddress(List<EquipmentAddressVo> treeNodes){
List<EquipmentAddressVo> trees = new ArrayList<EquipmentAddressVo>();
for (EquipmentAddressVo treeNode : treeNodes) {
if ("".equals(treeNode.getParentId()) || null==treeNode.getParentId() ) {
trees.add(findAddressChildren(treeNode,treeNodes));
}
}
return trees;
}
/**
* 遞歸查找地址子節點
* @param treeNodes
* @return
*/
public static EquipmentAddressVo findAddressChildren(EquipmentAddressVo treeNode,List<EquipmentAddressVo> treeNodes) {
for (EquipmentAddressVo it : treeNodes) {
if(treeNode.getAddressId().equals(it.getParentId())) {
if (treeNode.getChildren() == null) {
treeNode.setChildren(new ArrayList<EquipmentAddressVo>());
}
treeNode.getChildren().add(findAddressChildren(it,treeNodes));
}
}
return treeNode;
}
}
//vo實體類
public class EquipmentAddressVo {
/**
* 地址ID
*/
@ApiModelProperty("地址ID")
private String addressId;
/**
* 地址名稱
*/
@ApiModelProperty("地址名稱")
private String addressName;
/**
* 父級地址ID
*/
@ApiModelProperty("父級地址ID")
private String parentId;
private List<EquipmentAddressVo> children;
public List<EquipmentAddressVo> getChildren() {
return children;
}
public void setChildren(List<EquipmentAddressVo> children) {
this.children = children;
}
public String getAddressId() {
return addressId;
}
public void setAddressId(String addressId) {
this.addressId = addressId;
}
public String getAddressName() {
return addressName;
}
public void setAddressName(String addressName) {
this.addressName = addressName;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
}
//controller層 將數據庫中的地址使用treeutil類進行遞歸封裝
List<EquipmentAddressVo> list = equipmentAddressService.getAllEquipmentAddress();
ResultMsg = new ResultMsg(ResultStatusCode.OK,TreeUtil.RecursiveAddress(list));
//返回結果
{
"code": 200,
"msg": "OK",
"data": [
{
"addressId": "5dcc1568f5ca11e78dcb96adab3e1483",
"addressName": "廣東",
"parentId": null,
"children": [
{
"addressId": "97f24626f5ca11e78dcb96adab3e1483",
"addressName": "深圳",
"parentId": "5dcc1568f5ca11e78dcb96adab3e1483",
"children": [
{
"addressId": "803b083df78411e78dcb96adab3e1483",
"addressName": "二樓標準件倉",
"parentId": "97f24626f5ca11e78dcb96adab3e1483",
"children": null
},
{
"addressId": "d39844b0f5ca11e78dcb96adab3e1483",
"addressName": "五樓咖啡廳",
"parentId": "97f24626f5ca11e78dcb96adab3e1483",
"children": null
},
{
"addressId": "d39cbe3bf5ca11e78dcb96adab3e1483",
"addressName": "四樓行政部",
"parentId": "97f24626f5ca11e78dcb96adab3e1483",
"children": null
},
{
"addressId": "d3a0b68cf5ca11e78dcb96adab3e1483",
"addressName": "五樓平臺部",
"parentId": "97f24626f5ca11e78dcb96adab3e1483",
"children": null
},
{
"addressId": "d3a4d224f5ca11e78dcb96adab3e1483",
"addressName": "三樓車間",
"parentId": "97f24626f5ca11e78dcb96adab3e1483",
"children": null
},
{
"addressId": "d3a930b0f5ca11e78dcb96adab3e1483",
"addressName": "財務室",
"parentId": "97f24626f5ca11e78dcb96adab3e1483",
"children": null
},
{
"addressId": "d3ac5a2df5ca11e78dcb96adab3e1483",
"addressName": "食堂",
"parentId": "97f24626f5ca11e78dcb96adab3e1483",
"children": null
}
]
}
]
},
{
"addressId": "5dd1a5b3f5ca11e78dcb96adab3e1483",
"addressName": "湖南",
"parentId": null,
"children": [
{
"addressId": "97f9d0c6f5ca11e78dcb96adab3e1483",
"addressName": "長沙",
"parentId": "5dd1a5b3f5ca11e78dcb96adab3e1483",
"children": [
{
"addressId": "650a19cff5cb11e78dcb96adab3e1483",
"addressName": "A棟一樓",
"parentId": "97f9d0c6f5ca11e78dcb96adab3e1483",
"children": null
},
{
"addressId": "650ca4c3f5cb11e78dcb96adab3e1483",
"addressName": "保安室(大門)",
"parentId": "97f9d0c6f5ca11e78dcb96adab3e1483",
"children": null
},
{
"addressId": "650ffa8ff5cb11e78dcb96adab3e1483",
"addressName": "A棟二樓",
"parentId": "97f9d0c6f5ca11e78dcb96adab3e1483",
"children": null
},
{
"addressId": "651382c3f5cb11e78dcb96adab3e1483",
"addressName": "A棟三樓",
"parentId": "97f9d0c6f5ca11e78dcb96adab3e1483",
"children": null
},
{
"addressId": "65176866f5cb11e78dcb96adab3e1483",
"addressName": "B棟一樓",
"parentId": "97f9d0c6f5ca11e78dcb96adab3e1483",
"children": null
},
{
"addressId": "651b02aef5cb11e78dcb96adab3e1483",
"addressName": "B棟二樓",
"parentId": "97f9d0c6f5ca11e78dcb96adab3e1483",
"children": null
}
]
}
]
}
]
}