1、赋予角色是多对多,多对多的关系表进行增删查改,需要中间表来连接两张表关键字ID。通过中间表来进行增加查改。
添加权限:
1 @Autowired 2 private RoleService roleService; 3 // 添加角色 4 @RequestMapping(value="/addrole.action",method=RequestMethod.POST) 5 @ResponseBody 6 public String addRole(HttpServletRequest request,HttpSession session) { 7 //实现逻辑:1、从界面获取角色名字,把获取到的角色名字放入role表自动生成角色ID,再把这个ID存入中间表。 8 // 2、技术难点:因为复选框是多选,如何把多个选中的权限存入中间表而且ID是同一个人的。 9 // 解决问题:从界面获取复选框的值,如果是表单提交可以采用string[]数组去接收复选框的值,最好是通过写好的JS代码传值到后台,10 //然后循环便利这个复选框数组,在循环的过程中把roleid和权限ID添加进数组就行了,这就实现了权限的添加。11 String name=request.getParameter("name");12 String sex=request.getParameter("sex");13 //调用service层业务方法加入数据生成ID14 Role r=new Role();15 r.setName(name);16 r.setStatus(sex);17 Timestamp ts = new Timestamp(System.currentTimeMillis()); 18 Date date= new Date();//创建一个时间对象,获取到当前的时间19 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置时间显示格式20 String str = sdf.format(date);//将当前时间格式化为需要的类型21 try { 22 ts = Timestamp.valueOf(str); 23 } catch (Exception e) { 24 e.printStackTrace(); 25 }26 roleService.addrole(r);27 //添加进角色以后通过查询获取角色ID28 Listlistrole=roleService.getOne(r);29 Integer id = null;30 for (Role role : listrole) {31 id=role.getRoleid();32 }33 int y=0;34 String p=request.getParameter("position");35 String[] temp1=p.split(",");36 //Jsp页面上获取到了muenid(数组)For循环。生成一个中间表对象。存如角色id和muenid。37 for (int i = 0; temp1 != null && i < temp1.length; i++) {38 Integer resultStr = Integer.valueOf(temp1[i]);39 System.out.println("resu:"+resultStr);40 Connection con=new Connection();41 System.out.println("id2:"+id);42 con.setRoleid(id);43 con.setMuenid(resultStr);44 roleService.addConnection(con);45 y++;46 }47 if(y>0){48 return "Y";49 }else{50 return "N";51 }52 }