再帰関数を使用してデータベースからメニューモデルを生成する方法を知りたいです。私はすでにこのクラスを作成していますが、機能していません。私を助けてください、私はすでに1週間見つけて試しています。ありがとう
public class MenuDAOImpl extends ManagerBase<MenuMaster> implements MenuDAO {
private List<MenuMaster> list;
private List<MenuData> datas;
@Override
public MenuModel getMenu() {
MenuModel model = new DefaultMenuModel();
String[] orders = new String[]{"id"};
try {
list = getBySQLQuery("PARENT_MENU_ID=0", orders, 1000);
for (MenuMaster menuMaster : list) {
menuChild(menuMaster);
}
} catch (Exception e) {
}
return model;
// throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
private List<MenuData> menuChild(MenuMaster master) {
List<MenuData> listChild = new ArrayList<MenuData>();
String[] orders = new String[]{"id"};
try {
MenuData data = new MenuData();
data.mm = master;
data.mms = getBySQLQuery("PARENT_MENU_ID=" + master.getParentMenuId(), orders, 1000);
listChild.add(data);
} catch (Exception e) {
}
return listChild;
}
public class MenuData {
private MenuMaster mm;
private List<MenuMaster> mms;
public MenuData() {
}
public MenuMaster getMm() {
return mm;
}
public void setMm(MenuMaster mm) {
this.mm = mm;
}
public List<MenuMaster> getMms() {
return mms;
}
public void setMms(List<MenuMaster> mms) {
this.mms = mms;
}
}
}
これは私のデータベース テーブルです (申し訳ありませんが、画像をアップロードできません)。
ID | MENU_NAME | DISPLAY_NAME | URL |PARENT_MENU_ID |
1 | 従業員 | 従業員 | /従業員.xhtml | 0 |
2 | 従業員メニュー| 従業員 | /従業員.xhtml | 1 |
3 | ユーティリティ | ユーティリティ | | | 0 |
7 | asdf | asdf | | | 6 |
6 | ユーティリティメニュー | テスト | | | 3 |
5 | ユーティリティデータ | 管理者設定 | asdf | 3 |
4 | メニュー | メニューエディター | /utility/menu.xhtml | 3 |