SSM多对多业务处理04

这篇博客详细介绍了如何使用SSM(Spring、SpringMVC、MyBatis)框架处理用户角色权限的多对多关系。内容涵盖用户角色权限模块的表结构设计,包括角色表、用户与角色关联、权限资源表及其关联,以及用户退出、用户列表查询、用户添加、角色列表查询、权限资源列表、权限资源添加、角色授权和添加用户角色等功能的实现。涉及的实体类、Service、Dao和JSP页面代码均有详述。
摘要由CSDN通过智能技术生成

#SSM练习第4
##大纲内容

  1. 用户角色权限表结构
  2. 用户退出功能
  3. 用户添加/列表查询
  4. 角色列表功能
  5. 权限资源列表/增加
  6. 角色列表/角色授权
  7. 添加用户的角色

第1章 用户角色模块

1.1 用户角色权限模块表结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yKTwYv6a-1602591259149)(images\1555647462201.png)]

1.1.1 角色表
1.1.1.1 角色表信息描述role
序号 字段名称 字段类型 字段描述
1 id int(5) 主键自增
2 roleName varchar(50) 角色名
3 roleDesc varchar(50) 角色描述
1.1.1.2 SQL语句
--角色表
CREATE TABLE `sys_role` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `roleName` varchar(50) DEFAULT NULL,
  `roleDesc` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1.1.2 用户与角色关联关系

用户与角色之间是多对多关系,我们通过user_role表来描述其关联,在实体类中User中存在List,在SysRole中有List.而角色与权限之间也存在关系,我们会在后面介绍。

--建表语句
CREATE TABLE `sys_user_role` (
  `userId` int(5) NOT NULL,
  `roleId` int(5) NOT NULL,
  PRIMARY KEY (`userId`,`roleId`),
  KEY `roleId` (`roleId`),
  CONSTRAINT `sys_user_role_ibfk_1` FOREIGN KEY (`userId`) REFERENCES `sys_user` (`id`),
  CONSTRAINT `sys_user_role_ibfk_2` FOREIGN KEY (`roleId`) REFERENCES `sys_role` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1.1.3 权限资源表
1.1.3.1 权限资源表描述permission
序号 字段名称 字段类型 字段描述
1 id int(5) 主键自增
2 permissionName varchar(50) 权限名(菜单名)
3 url varchar(50) 权限路径(菜单访问路径)
4 pid int(5) 父菜单ID
1.1.3.2 SQL语句
--资源权限表
CREATE TABLE `sys_permission` (
  `id` int(5) NOT NULL,
  `permissionName` varchar(50) DEFAULT NULL,
  `url` varchar(50) DEFAULT NULL,
  `pid` int(5) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1.1.4 权限资源与角色关联关系

权限资源与角色是多对多关系,我们使用role_permission表来描述。在实体类SysPermission中存在List,在Role类中有List

--资源角色表
CREATE TABLE sys_role_permission(
	permissionId int(5),
	roleId int(5),
	PRIMARY KEY(permissionId,roleId),
	FOREIGN KEY (permissionId) REFERENCES sys_permission(id),
	FOREIGN KEY (roleId) REFERENCES sys_role(id)
);
1.1.5 实体类

角色实体Bean

public class SysRole {
   
    private Integer id;
    private String roleName;
    private String roleDesc;
    //一个角色可以授予多个用户,角色和用户之间属于一对多关系,彼此之间属于多对多关系
    private List<SysUser> users;
    //一个角色可以有多个权限,角色和权限之间属于一对多关系,彼此之间属于多对多关系
    private List<SysPermisson> permissions;

	//get...set...
}

权限资源实体Bean

public class SysPermisson {
   
    private Long id;
    private String permissionName;
    private String url;
    private Long pid;
    //一个权限可以授予多个角色,权限和角色之间属于一对多关系,彼此之间属于多对多关系
    private List<SysRole> rols;
	//get..set...
}
1.2 用户退出功能

在header.jsp的页面中编写超链接

<a href="${pageContext.request.contextPath}/logout" class="btn btn-default btn-flat">注销</a>
1.3 用户的列表查询功能
1.3.1 SysUserController代码

修改SysUserController,实现分页查询

/***
 * 用户列表
 * @return
 */
@RequestMapping(value = "/list")
public String list(@RequestParam(value = "page",required = false,defaultValue = "1")int page,
                   @RequestParam(value = "size",required = false,defaultValue = "5")int size, Model model){
   
    //集合查询
    PageInfo<SysUser> pageInfo = userService.list(page,size);

    model.addAttribute("pageInfo",pageInfo);
    return "user-list";
}
1.3.2 Service代码

修改SysUserService和SysUserServiceImpl代码

/**
 * 用户集合查询-接口
 * @return
 * @param page
 * @param size
 */
PageInfo<SysUser> list(int page, int size);

 /***
 * 实现类
 * @param page
 * @param size
 * @return
 */
@Override
public PageInfo<SysUser> list(int page, int size) {
   
    //分页
    PageHelper.startPage(page,size);
    //集合查询
    List<SysUser> sysUsers = userDao.list();
    return new PageInfo<SysUser>(sysUsers);
}
1.3.3 Dao代码

修改SysUserDao代码

 /***
 * 列表查询
 * @return
 */
@Select("select * from sys_user")
List<SysUser> list();
1.3.4 JSP页面
<tbody>
	<c:forEach items="${pageInfo.list}" var="user">
		<tr>
			<td><input name="ids" type="checkbox"></td>
			<td>${user.id }</td>
			<td>${user.username}</td>
			<td>${user.email}</td>
			<td>${user.phoneNum}</td>
			<td>
				<c:if test="${user.status==1}">正常</c:if>
				<c:if test="${user.status==2}">禁止登陆</c:if>
			</td>
			<td class="text-center">
				<a href="${pageContext.request.contextPath}/pages/user-show.jsp" class="btn bg-olive btn-xs">详情</a>
				<a href="${pageContext.request.contextPath}/pages/user-role-add.jsp" class="btn bg-olive btn-xs">添加角色</a>
			</td>
		</tr>
	</c:forEach>
</tbody>

<div class="box-footer">
	<div class="pull-left">
		<div class="form-group form-inline">
			总共${pageInfo.pages}页,共${pageInfo.total}条数据。 每页
			<select class=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值