国产探花免费观看_亚洲丰满少妇自慰呻吟_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;  }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 赣榆县| 施甸县| 岫岩| 汉源县| 监利县| 若尔盖县| 磐石市| 呼图壁县| 汉中市| 鸡西市| 安陆市| 蓝山县| 闻喜县| 元谋县| 和顺县| 蕲春县| 新疆| 乌兰县| 治县。| 周口市| 河津市| 江都市| 余江县| 响水县| 句容市| 济阳县| 玉树县| 衡阳市| 察隅县| 和政县| 乌鲁木齐县| 隆回县| 黄龙县| 义乌市| 裕民县| 东平县| 蒙自县| 钟山县| 嘉祥县| 珠海市| 宜春市|