用户-角色-权限 管理常用数据库表的设计

本文介绍了用户-角色-权限管理中常用的数据库表设计,包括用户表t_user、角色表t_role、用户角色关联表t_user_role和权限表t_permission。每个表的主要字段及其作用被详细说明。此外,还提到了对应的javabean设计。推荐学习资源:Java知识学习网。

数据库表

1、用户表 t_user  id、username、password

2、角色表 t_role   id、roleName

3、用户角色表 t_user_role  user_id、role_id

4、权限表 t_permission  id、permissionName、role_id

 

 

javabean设计

1、User

 

package com.cn.pojo;  
  
import java.util.HashSet;  
import java.util.List;  
import java.util.Set;  
  
import javax.persistence.Entity;  
import javax.persistence.GeneratedValue;  
import javax.persistence.GenerationType;  
import javax.persistence.Id;  
import javax.persistence.JoinColumn;  
import javax.persistence.JoinTable;  
import javax.persistence.ManyToMany;  
import javax.persistence.Table;  
import javax.persistence.Transient;  
  
import org.hibernate.validator.constraints.NotEmpty;  
  
@Entity  
@Table(name="t_user")  
public class User {  
  
    private Integer id;  
    @NotEmpty(message="用户名不能为空")  
    private String username;  
    @NotEmpty(message="密码不能为空")  
    private String password;  
    private List<Role> roleList;//一个用户具有多个角色  
      
    @Id  
    @GeneratedValue(strategy=GenerationType.IDENTITY)  
    public Integer getId() {  
        return id;  
    }  
    public void setId(Integer id) {  
        this.id = id;  
    }  
    public String getUsername() {  
        return username;  
    }  
    public void setUsername(String username) {  
        this.username = username;  
    }  
    public String getPassword() {  
        return password;  
    }  
    public void setPassword(String password) {  
        this.password = password;  
    }  
    @ManyToMany  
    @JoinTable(name="t_user_role",joinColumns={@JoinColumn(name="user_id")},inverseJoinColumns={@JoinColumn(name="role_id")})  
    public List<Role> getRoleList() {  
        return roleList;  
    }  
    public void setRoleList(List<Role> roleList) {  
        this.roleList = roleList;  
    }  
      
    @Transient  
    public Set<String> getRolesName(){  
        List<Role> roles=getRoleList();  
        Set<String> set=new HashSet<String>();  
        for (Role role : roles) {  
            set.add(role.getRolename());  
        }  
        return set;  
    }  
      
}  

2、角色

 

 

package com.cn.pojo;  
  
import java.util.ArrayList;  
import java.util.List;  
  
import javax.persistence.Entity;  
import javax.persistence.GeneratedValue;  
import javax.persistence.GenerationType;  
import javax.persistence.Id;  
import javax.persistence.JoinColumn;  
import javax.persistence.JoinTable;  
import javax.persistence.ManyToMany;  
import javax.persistence.OneToMany;  
import javax.persistence.Table;  
import javax.persistence.Transient;  
  
@Entity  
@Table(name="t_role")  
public class Role {  
  
    private Integer id;  
    private String rolename;  
    private List<Permission> permissionList;//一个角色对应多个权限  
    private List<User> userList;//一个角色对应多个用户  
      
    @Id  
    @GeneratedValue(strategy=GenerationType.IDENTITY)  
    public Integer getId() {  
        return id;  
    }  
    public void setId(Integer id) {  
        this.id = id;  
    }  
    public String getRolename() {  
        return rolename;  
    }  
    public void setRolename(String rolename) {  
        this.rolename = rolename;  
    }  
    @OneToMany(mappedBy="role") 
    public List<Permission> getPermissionList() {  
        return permissionList;  
    }  
    public void setPermissionList(List<Permission> permissionList) {  
        this.permissionList = permissionList;  
    }  
    @ManyToMany  
    @JoinTable(name="t_user_role",joinColumns={@JoinColumn(name="role_id")},inverseJoinColumns={@JoinColumn(name="user_id")})  
    public List<User> getUserList() {  
        return userList;  
    }  
    public void setUserList(List<User> userList) {  
        this.userList = userList;  
    }  
      
    @Transient  
    public List<String> getPermissionsName(){  
        List<String> list=new ArrayList<String>();  
        List<Permission> perlist=getPermissionList();  
        for (Permission per : perlist) {  
            list.add(per.getPermissionname());  
        }  
        return list;  
    }  
}  

3、权限

 

 

package com.cn.pojo;  
  
import javax.persistence.Entity;  
import javax.persistence.GeneratedValue;  
import javax.persistence.GenerationType;  
import javax.persistence.Id;  
import javax.persistence.JoinColumn;  
import javax.persistence.ManyToOne;  
import javax.persistence.Table;  
  
@Entity  
@Table(name="t_permission")  
public class Permission {  
  
    private Integer id;  
    private String permissionname;  
    private Role role;//一个权限对应一个角色  
      
    @Id  
    @GeneratedValue(strategy=GenerationType.IDENTITY)  
    public Integer getId() {  
        return id;  
    }  
    public void setId(Integer id) {  
        this.id = id;  
    }  
    public String getPermissionname() {  
        return permissionname;  
    }  
    public void setPermissionname(String permissionname) {  
        this.permissionname = permissionname;  
    }  
    @ManyToOne  
    @JoinColumn(name="role_id")  
    public Role getRole() {  
        return role;  
    }  
    public void setRole(Role role) {  
        this.role = role;  
    }  
      
}  

推荐大家一个Java的学习网站:Java知识学习网,Java资料下载,Java学习路线图,网址:https://www.java1010.com

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值