首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

RBAC 權限管理中用戶角色關聯的 CRUD 實現思路

     編輯:程式設計疑難解答

業務場景

Struts2 實現 RBAC 權限管理,用戶管理模塊需支持 CRUD。核心難點:新增用戶時如何同步綁定角色?

數據模型設計

-- 用戶表
CREATE TABLE sys_user (id PK, username, password, ...);

-- 角色表
CREATE TABLE sys_role (id PK, name, ...);

-- 用戶-角色關聯表 (多對多)
CREATE TABLE sys_user_role (user_id FK, role_id FK, PRIMARY KEY(user_id, role_id));

新增用戶業務流程

  1. 前端表單提交用戶基本信息 + 角色 ID 列表(如 roleIds=1,3,5)。
  2. Action 接收參數,調用 UserService.addUser(user, roleIds)。
  3. Service 層開啟事務(@Transactional):
    • 插入 sys_user 獲取自增 ID。
    • 遍歷 roleIds 批量插入 sys_user_role。
    • 任一步驟失敗整體回滾。
  4. 返回結果給前端。

代碼骨架

@Service
public class UserServiceImpl implements UserService {
    @Autowired UserMapper userMapper;
    @Autowired UserRoleMapper userRoleMapper;

    @Transactional
    public void addUser(User user, List roleIds) {
        userMapper.insert(user); // 回填 user.id
        if (roleIds != null && !roleIds.isEmpty()) {
            List list = roleIds.stream()
                .map(rid -> new UserRole(user.getId(), rid))
                .collect(Collectors.toList());
            userRoleMapper.batchInsert(list);
        }
    }
}

修改/刪除聯動

  • 修改:先刪除原關聯,再批量插入新角色列表。
  • 刪除用戶:級聯刪除 sys_user_role 記錄(或配置外鍵 ON DELETE CASCADE)。

掌握「主表+關聯表」事務操作模式,RBAC 業務層即可穩健落地。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved