在此,我想从数据库获取详细信息并使用递归方法设置到我的bean中。因此,我可以以angularUi树形格式显示。我该如何编写递归方法以将其设置到我的bean中。
我使用rowId区分父项和子项。您可以访问我的示例屏幕。
例如:Rowid是1的父项 该1的子项为1.1, 1.1的子项为1.1.1,以此类推。
我将所有父项和子项保存在单个表中,即上图。
每个对象(行)都会有items[]
。如果父项有任何子项,则该子项将添加到该items[]
数组中。如果该子项有任何子项,则该子项将添加到该行的父项的items[]
中……以此类推。
例如:JSON对象如下:
{
"id": 1,
"rowId": "1",
"items": [
{
"id": 10,
"rowId": "1.1",
"items": [
{
"id": 100,
"rowId": "1.1.1",
"items": [
{
"id": 1000,
"rowId": "1.1.1.1",
"items": []
}
]
}
]
},
{
"id": 11,
"rowId": "1.2",
"items": []
}
]
}
我使用这个答案来保存这些数据。
但是在检索时,我遇到了问题。问题是,在检索时,不会有任何父级和子级,因为数据将保存在同一个表中。关系只有rowid。因此,我需要编写递归方法来添加子项到父项的items[]
数组中,就像保存一样。
public class AdminComponentBean{
List<MultiAdminComponent> componentListbean;
}
MultiAdminComponent.java:-
public class MultiAdminComponent {
private String componentName;
private String componentIdentification;
private String componentType;
private String componentState;
private String componentUrl;
private String rowId;
private List<MultiAdminComponent> items;
}
在这里,我尝试检索所有细节并尝试将子项添加到父项。但它应该使用递归方法。
List<MultiAdminComponent> componentList=BaseDAO.getAdminComponentDAOObject().getComponentDetails();
if(null != componentList) {
for(MultiAdminComponent itemsList : componentList){
if(itemsList.getRowId().length().equals() "1"){//here parent row will come
//by considering rowid I need to find the child of the rowId
//child of 1 is 1.1
//if 1.1 is child of 1 then I need to add that 1.1 object to `items[]` array of 1
//like this it should work recursve
}
}
}
rowId = parent.rowId + indexInParent
)。 因此,您可以在一个查询中加载部分树(例如,... where rowId in ('1','1.1') or rowId like '1.1.%'
以获取元素1、1.1和所有1.1的子项),并且正如Absurd-Mind建议的那样,使用映射将加载的元素连接起来。 - Thomas