1. 项目准备
我们将使用以下技术栈:
- MyBatis:用于数据库交互的持久层框架
- MyBatis Plus:MyBatis 的增强版,简化了 CRUD 操作
- Spring Boot:主流的 Java Web 框架,简化了项目的配置和开发
- RBAC 模型:基于角色的权限管理模式
数据库表结构设计
为了实现 RBAC 功能,我们需要设计以下几张表:
user
:用户表,存储用户的基本信息。role
:角色表,每个用户可以有多个角色。permission
:权限表,每个角色可以拥有多个权限。user_role
:用户与角色的关联表。role_permission
:角色与权限的关联表。
CREATE TABLE user (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
enabled TINYINT(1) DEFAULT 1
);
CREATE TABLE role (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL
);
CREATE TABLE permission (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL
);
CREATE TABLE user_role (
user_id BIGINT,
role_id BIGINT,
PRIMARY KEY (user_id, role_id),
FOREIGN KEY (user_id) REFERENCES user(id),
FOREIGN KEY (role_id) REFERENCES role(id)
);
CREATE TABLE role_permission (
role_id BIGINT,
permission_id BIGINT,
PRIMARY KEY (role_id, permission_id),
FOREIGN KEY (role_id) REFERENCES role(id),
FOREIGN KEY (permission_id) REFERENCES permission(id)
);
2. 项目结构
我们的项目结构如下:
src
└── com
└── atguigu
├── entities
│ ├── User.java
│ ├── Role.java
│ └── Permission.java
├── mapper
│ └── UserMapper.java
└── controller