java三大框架整合做权限管理操作

来源:互联网 发布:绵阳师范网络教学 编辑:程序博客网 时间:2024/05/01 23:30

关系都是多对多的关系,双向查找。

用户类:

[java] view plaincopy
  1. import java.util.Set;  
  2.   
  3. public class RPMS_user {  
  4.   
  5.     private int userId;  
  6.     private String userName;  
  7.     private String userPass;  
  8.     private Set<RPMS_role> roleId;  
  9.   
  10.        //生成get/set方法  
  11. }  

映射文件:

[java] view plaincopy
  1. <hibernate-mapping package="com.softeem.dto">  
  2.       <class name="RPMS_user" >  
  3.          <id name="userId">  
  4.            <generator class="native"/>  
  5.          </id>  
  6.         <property name="userName" />  
  7.         <property name="userPass"></property>  
  8.         <set name="roleId" table="RPMS_user_role" lazy="false" cascade="all">  
  9.                 <key column="userid"></key>  
  10.                 <many-to-many class="com.softeem.dto.RPMS_role" column="roleid"></many-to-many>  
  11.         </set>  
  12.       </class>  
  13.    </hibernate-mapping>  

下面的只说类,映射文件都差不多,理解下都可以写出来

角色类:

[java] view plaincopy
  1. public class RPMS_role {  
  2.       
  3.     private int roleId;  
  4.     private String roleName;  
  5.     private RPMS_owner ownerId;  
  6.     private Set<RPMS_power> powerId;   
  7.     private Set<RPMS_user> userId;  
  8.   
  9.        //生成get/set方法  
  10. }  

权限类:

[java] view plaincopy
  1. public class RPMS_power {  
  2.   
  3.     private int powerId;           
  4.     private String powerName;      
  5.     private Set<RPMS_role> roles;    //保存的多个角色  
  6.   
  7. }  

添加一个对象,在这里就不多说了,在这里最要是说下怎样来形成关系,和一些可能出现的错误:

添加形成关系:

[java] view plaincopy
  1. public String AddUserRole(){  
  2.         //查找角色  
  3.         role=uservice.selectRoleById(role);  
  4.         Set<RPMS_role> set = new HashSet<RPMS_role>();  
  5.         set.add(role);  
  6.         //把角色添加到用户中  
  7.         user.setRoleId(set);  
  8.         uservice.addUser(user);  
  9.         return SUCCESS;  
  10.     }  
这里举一个例子就好了,类似于增删改查的例子网上收索下一大堆:(自己琢磨下)

关键是说下,怎么从一个多对多的实例中添加或删除一条记录而不影响其他记录:

添加:

[java] view plaincopy
  1. /** 
  2.      * 用于为角色添加对应的权限 
  3.      *      先获取到选择的权限 以及角色 
  4.      *      然后把权限保存到角色中去 
  5.      **/  
  6.     public String AddRolePower(){  
  7.         if(chickid!=null&&chickid.size()>0){  
  8.         for(int i=0;i<chickid.size();i++){  
  9.             System.out.println(chickid.get(i));  
  10.             RPMS_power pw = new RPMS_power();  
  11.             pw.setPowerId(chickid.get(i));  
  12.             power=uservice.selectPowerById(pw);  
  13.             plist.add(power);  
  14.         }  
  15.         role=uservice.selectRoleById(role);  
  16.         Set<RPMS_power> set = new HashSet<RPMS_power>();  
  17.         for(int i=0;i<plist.size();i++){  
  18.             set.add(plist.get(i));  
  19.         }  
  20.         role.setPowerId(set);  
  21.         uservice.AddRolePower(role);  
  22.           
  23.         }  
  24.         return SUCCESS;  
  25.     }  


删除:

[java] view plaincopy
  1. /**删除权限功能 
  2.      *      先获取用户提交的权限 
  3.      *      然后获取角色中有的权限 
  4.      *      判断用户提交的权限在角色中是否存在 
  5.      *      最后再对存在的权限进行删除功能 
  6.      * **/  
  7.     public String DelRolePower(){  
  8.         if(chickid!=null&&chickid.size()>0){  
  9.         role=uservice.selectRoleById(role);  
  10.       
  11.         for(int i=0;i<chickid.size();i++){  
  12.             Iterator<RPMS_power> it =role.getPowerId().iterator();  
  13.             while(it.hasNext()){  
  14.                 RPMS_power wer=it.next();  
  15.                 if(chickid.get(i)==wer.getPowerId()){  
  16.                     plist.add(wer);  
  17.                 }  
  18.             }  
  19.         }  
  20.         for(int i=0;i<plist.size();i++){  
  21.             role.getPowerId().remove(plist.get(i));  
  22.         }  
  23.         uservice.AddRolePower(role);  
  24.         }  
  25.         return SUCCESS;  
  26.     }  
原创粉丝点击