Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

Design of privilege Management of Spring + Struts2 + ExtJs (1) Design of Database

2025-03-29 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Database >

Share

Shulou(Shulou.com)06/01 Report--

1、本系统的后台使用mysql数据库,SSH 框架,前端使用ExtJs实现。因为系统需要用到权限管理,所以作此记录,权限管理精确到前端的每一个按钮,甚至每一个action请求。

废话不多说,直接进入主题

(一)、数据库的设计

权限管理部分总共包括4个数据表:

Power(记录权限)、 Role(记录角色)、 PowerRole(中间表)、 PowerUrl(记录每一个action请求或者前端按钮)

(Role表)

package com.txb.model;

import java.util.Set;

import javax.persistence.CascadeType;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.FetchType;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.OneToMany;

import javax.persistence.Table;

@Entity

@Table(name="TB_ROLE")

public class Role {

private int roleId;

private String roleName;

private Set rolePowers;

private Set adminRoles;

@Id

@Column(name = "ROLE_ID", insertable = false, updatable = false, nullable = false, unique = true)

@GeneratedValue(strategy=GenerationType.AUTO)

public int getroleId() {

return roleId;

}

public void setroleId(int roleId) {

this.roleId = roleId;

}

@Column(name = "role_NAME", nullable = false, length = 50)

public String getroleName() {

return roleName;

}

public void setroleName(String roleName) {

this.roleName = roleName;

}

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "role")

public Set getrolePowers() {

return rolePowers;

}

public void setrolePowers(Set rolePowers) {

this.rolePowers = rolePowers;

}

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "role")

public Set getAdminroles() {

return adminRoles;

}

public void setAdminroles(Set adminRoles) {

this.adminRoles = adminRoles;

}

}

(Power表)

package com.txb.model;

import java.util.Set;

import javax.persistence.CascadeType;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.FetchType;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.OneToMany;

import javax.persistence.Table;

@Entity

@Table(name="TB_POWER")

public class Power {

private int powerId;

private String powerName;

private String powerType;

private String menu; //菜单

private Set rolePowers;

private Set actionUrls; //用户角色

@Id

@Column(name = "POWER_ID", insertable = false, updatable = false, nullable = false, unique = true)

@GeneratedValue(strategy=GenerationType.AUTO)

public int getPowerId() {

return powerId;

}

public void setPowerId(int powerId) {

this.powerId = powerId;

}

@Column(name="POWER_NAME", nullable = false, length = 50)

public String getPowerName() {

return powerName;

}

public void setPowerName(String powerName) {

this.powerName = powerName;

}

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "power")

public Set getRolePowers() {

return rolePowers;

}

public void setRolePowers(Set rolePowers) {

this.rolePowers = rolePowers;

}

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "power")

public Set getActionUrls() {

return actionUrls;

}

public void setActionUrls(Set actionUrls) {

this.actionUrls = actionUrls;

}

@Column(name="POWER_TYPE", nullable = false, length = 10)

public String getPowerType() {

return powerType;

}

public void setPowerType(String powerType) {

this.powerType = powerType;

}

@Column(name="POWER_MENU", nullable = true, length = 10)

public String getMenu() {

return menu;

}

public void setMenu(String menu) {

this.menu = menu;

}

}

(Role - Power 中间表,因为他们是多对多的关系)

package com.txb.model;

import java.io.Serializable;

import javax.persistence.*;

/**

* The persistent class for the rose_power database table.

*

*/

@Entity

@Table(name="TB_ROLE_POWER")

public class RolePower implements Serializable {

private int rpid;

private Power power;

private Role role;

public RolePower() {

}

@Id

@Column(name = "RP_ID", insertable = false, updatable = false, nullable = false, unique = true)

@GeneratedValue(strategy=GenerationType.AUTO)

public int getRpid() {

return this.rpid;

}

public void setRpid(int rpid) {

this.rpid = rpid;

}

@ManyToOne

@JoinColumn(name="POWER_ID")

public Power getPower() {

return this.power;

}

public void setPower(Power power) {

this.power = power;

}

@ManyToOne

@JoinColumn(name="ROLE_ID")

public Role getRole() {

return role;

}

public void setRole(Role role) {

this.role = role;

}

}

(PowerUrl 表,这个表是用来记录每一个action请求,判断该用户所拥有的权限是否能执行对应的action请求)

package com.txb.model;

import javax.persistence.Column;

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="TB_ACTION_URL")

public class ActionUrl {

private Power power;

private String url;

private String actionName;

private int aId;

@ManyToOne

@JoinColumn(name="POWER_ID")

public Power getPower() {

return power;

}

public void setPower(Power power) {

this.power = power;

}

@Column(name="URL", nullable = false, length = 50)

public String getUrl() {

return url;

}

public void setUrl(String url) {

this.url = url;

}

@Column(name="ACTION_NAME", nullable = false, length = 50)

public String getActionName() {

return actionName;

}

public void setActionName(String actionName) {

this.actionName = actionName;

}

@Id

@Column(name = "A_ID", insertable = false, updatable = false, nullable = false, unique = true)

@GeneratedValue(strategy=GenerationType.AUTO)

public int getaId() {

return aId;

}

public void setaId(int aId) {

this.aId = aId;

}

}

到此权限数据库就已经设计完毕,下一篇给大家介绍后台逻辑部分

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Database

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report