1. 程式人生 > >java實現動態許可權(選單管理)動態新增選單,動態新增角色SSM框架

java實現動態許可權(選單管理)動態新增選單,動態新增角色SSM框架

首先是資料庫設計

Menu表(選單表)

Role表(角色表)

Role_Menu表(角色選單關係表)

User表(使用者表)

User_Role表(使用者角色關係表)

其他實體類就略過了

在Menu實體類中添加了一個List<Menu>集合

在MenuMapper中寫了如下的方法

 /**
     * 根據等級或父節點查詢選單資訊
     * @param level 等級
     * @param parentid 父節點編號
     * @return 選單資訊
     */
    List<Menu> selectMenuByLevelOrParentid(@Param("level") int level,@Param("parentid") int parentid);

對應的
<select id="selectMenuByLevelOrParentid" resultType="menu">
  	SELECT
  	<include refid="Base_Column_List" />
	FROM MENU
  	<where>
  		and level = #{level}
  		and parent_id = #{parentid}
  	</where>
  </select>

MenuService和實現類中

/**
	 * 查詢選單(父子選單對應形式)
	 * @return
	 */
	public List<Menu> SelectMenuByparent(Menu m,int level,int parentid);


public List<Menu> SelectMenuByparent(Menu m,int i,int id){
		List<Menu> menus=this.selectMenuByLevelOrParentid(i,id);
		if(menus!=null) {
			if(m!=null) {
				m.setMenus(menus);
			}
			for (Menu menu : menus) {
				i++;
				this.SelectMenuByparent(menu,i,menu.getId());
			}
		}
		return menus;
	}

在controller中呼叫

/**
	 * 顯示所有選單
	 * @param model
	 * @return 
	 */
	@RequestMapping("list")
	public String SelectAllMenu(Model model) {
		List<Menu> menu = new ArrayList<Menu>();
		//查詢所有選單資訊
		menu = this.menuService.SelectMenuByparent(null,0,0);
		//存入選單資訊
		model.addAttribute("menus", menu);
		MenuTree mt = new MenuTree(menu);
		return "/Menu/index";
	}

原始碼地址以後會上傳