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));
roleIds=1,3,5)。UserService.addUser(user, roleIds)。@Transactional):
sys_user 獲取自增 ID。roleIds 批量插入 sys_user_role。@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 業務層即可穩健落地。