国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 幫助中心 > 正文

springboot + vue 實現遞歸生成多級菜單(實例代碼)

2024-07-09 22:42:35
字體:
來源:轉載
供稿:網友

開發過程中,涉及到多級菜單的應用,找了一些資料案例實現如下(使用springboot+layui+oracle):

創建菜單表 :

-- 創建菜單表create table wxmini_menus( menu_id         number unique,   --菜單ID menu_name        varchar2(20), menu_url        varchar2(200), menu_icon        varchar2(100), parent_id        number,      --父菜單ID status         varchar2(10), menu_sort        number, last_update_date    DATE not null, last_updated_by     NUMBER not null, creation_date      DATE not null, created_by       NUMBER not null, last_update_login    NUMBER); -- 插入菜單記錄insert into wxmini_menus values((select 1 from dual),'設置',null,null,null,1,100,sysdate,-1,sysdate,-1,-1);insert into wxmini_menus values((select max(menu_id)+1 from yl_wxmini_menus),'用戶',null,null,1,1,null,sysdate,-1,sysdate,-1,-1);insert into wxmini_menus values((select max(menu_id)+1 from yl_wxmini_menus),'網站用戶',null,null,1,1,null,sysdate,-1,sysdate,-1,-1);insert into wxmini_menus values((select max(menu_id)+1 from yl_wxmini_menus),'角色管理',null,null,1,1,null,sysdate,-1,sysdate,-1,-1);--主菜單二insert into wxmini_menus values((select max(menu_id)+1 from yl_wxmini_menus),'主頁',null,null,null,1,1,sysdate,-1,sysdate,-1,-1);insert into wxmini_menus values((select max(menu_id)+1 from yl_wxmini_menus),'控制臺',null,null,5,1,null,sysdate,-1,sysdate,-1,-1);insert into wxmini_menus values((select max(menu_id)+1 from yl_wxmini_menus),'主頁一',null,null,5,1,null,sysdate,-1,sysdate,-1,-1);insert into wxmini_menus values((select max(menu_id)+1 from yl_wxmini_menus),'主頁二',null,null,5,1,null,sysdate,-1,sysdate,-1,-1);

實體類 WxMenu.java:

public class WxMenu {    private String menu_id;  private String menu_name;  private String menu_url;  private String menu_icon;  private String parent_id;  private String parent_menu_name;  private String status;  private String menu_sort;  private String last_update_date;  private long last_updated_by;  private String creation_date;  private long created_by;  private long last_update_login;   private List<WxMenu> childMenus;   ......}Controller控制層 :@Controller@RequestMapping("/index")public class IndexController {   @Autowired  private WxUserService wxUserService;   /**   * 獲取所有菜單數據   * @return   */  @ResponseBody  @RequestMapping(value = "/loadAuthMenus",method = RequestMethod.GET)  public LayuiJsonFormat<HashMap> login(String username, String password, HttpServletRequest request) {     // 獲取所有菜單數據    List<WxMenu> wxMenus = wxUserService.getAllMenus();    //定義 存儲一級菜單    List<WxMenu> menuList = new ArrayList<WxMenu>();    // 先找到所有的一級菜單    for (int i = 0; i < wxMenus.size(); i++) {      // 一級菜單沒有父菜單,為null      if (StringUtils.isBlank(wxMenus.get(i).getParent_id())) {        menuList.add(wxMenus.get(i));      }    }    // for調用遞歸,循環獲取所有子菜單    for (WxMenu menu : menuList) {      menu.setChildMenus(getChildmenus(menu.getMenu_id(), wxMenus));    }    //存儲所有菜單,將數據回傳至 layui 前端    map.put("menus", menuList);     return LayuiJsonFormat.createBySuccess(map.size(),map);  }    /**   * 遞歸子菜單   * @param id   * @param wxMenus   * @return   */  private List<WxMenu> getChildmenus(String id, List<WxMenu> wxMenus) {    // 子菜單    List<WxMenu> childMenus = new ArrayList<>();    for (WxMenu menu : wxMenus) {      if (StringUtils.isNotBlank(menu.getParent_id())) {        if (menu.getParent_id().equals(id)) {          childMenus.add(menu);        }      }    }    for (WxMenu menu : childMenus) {      //數據庫動態存儲菜單的url,此時判斷url為空的,則是節點菜單(存在子菜單)      if (StringUtils.isBlank(menu.getMenu_url())) {        // 遞歸調用        menu.setChildMenus(getChildmenus(menu.getMenu_id(), wxMenus));      }    }    if (childMenus.size() == 0) {      return null;    }    return childMenus;  }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广宗县| 台安县| 北流市| 肃北| 宜宾县| 桐梓县| 乌鲁木齐县| 周至县| 乐清市| 琼中| 伊金霍洛旗| 包头市| 寿宁县| 昌宁县| 延庆县| 隆子县| 东宁县| 临武县| 南雄市| 许昌市| 鹰潭市| 阜城县| 石河子市| 定结县| 新野县| 望江县| 朔州市| 电白县| 晋城| 安仁县| 宁国市| 天峻县| 淳安县| 山东省| 自治县| 商洛市| 抚州市| 昭平县| 蒲城县| 洛南县| 中卫市|