2023-7-17

本文介绍了如何使用PDManer创建数据库表,包括users、roles、permissions以及关系表,并通过MySQL命令行插入数据。接着,展示了如何进行多表查询以获取特定用户的角色和权限,同时提到了利用SpringMVC的Generator自动生成相关代码,并进行了Postman测试。
摘要由CSDN通过智能技术生成

使用PDManer建表

新建项目

在这里插入图片描述

点击创建主题区域

在这里插入图片描述
在这里插入图片描述

点击数据表右键选择新增数据表

在这里插入图片描述

  • 创建users

在这里插入图片描述

  • 创建roles

在这里插入图片描述

  • 创建permissions

在这里插入图片描述

  • 用户-角色表

在这里插入图片描述

  • 角色-权限表

在这里插入图片描述

创建关系图

在这里插入图片描述

鼠标左键可以改变关系

在这里插入图片描述

MySQLcmd操作

找到MySQL的安装目录

在这里插入图片描述

右键选择在终端中打开

在这里插入图片描述

输入以下命令从而链接上数据库

mysql -uroot -p123456

使用命令切换数据库

use 16ban

往表格加入数据

  • permissions表加入数据
//一级菜单
insert into permissions(PARENT_PERMISSION_ID,PERMISSION_NAME,url,target,icon,IS_PARENT) values(0,'首页','home.html','content','fa fa-home','true');
insert into permissions(PARENT_PERMISSION_ID,PERMISSION_NAME,url,target,icon,IS_PARENT) values(0,'用户管理','null','null','fa fa-user','true');
insert into permissions(PARENT_PERMISSION_ID,PERMISSION_NAME,url,target,icon,IS_PARENT) values(0,'角色管理','null','null','fa fa-user-o','true');
insert into permissions(PARENT_PERMISSION_ID,PERMISSION_NAME,url,target,icon,IS_PARENT) values(0,'权限管理','null','null','fa fa-bus','true');
insert into permissions(PARENT_PERMISSION_ID,PERMISSION_NAME,url,target,icon,IS_PARENT) values(0,'文章管理','null','null','fa fa-book','true');
insert into permissions(PARENT_PERMISSION_ID,PERMISSION_NAME,url,target,icon,IS_PARENT) values(0,'轮播图管理','null','null','fa fa-user-o','true');
insert into permissions(PARENT_PERMISSION_ID,PERMISSION_NAME,url,target,icon,IS_PARENT) values(0,'新闻管理','null','null','fa fa-file-zip-o','true');

创建成功
在这里插入图片描述

//二级菜单
insert into permissions(PARENT_PERMISSION_ID,PERMISSION_NAME,url,target,IS_PARENT) values(2,'用户列表','userList.html','content','false');
insert into permissions(PARENT_PERMISSION_ID,PERMISSION_NAME,url,target,IS_PARENT) values(3,'角色列表','roleList.html','content','false');
insert into permissions(PARENT_PERMISSION_ID,PERMISSION_NAME,url,target,IS_PARENT) values(4,'权限列表','permissionList.html','content','false');
insert into permissions(PARENT_PERMISSION_ID,PERMISSION_NAME,url,target,IS_PARENT) values(5,'文章列表','articleList.html','content','false');
insert into permissions(PARENT_PERMISSION_ID,PERMISSION_NAME,url,target,IS_PARENT) values(5,'文章分类','articleCatgory.html','content','false');
insert into permissions(PARENT_PERMISSION_ID,PERMISSION_NAME,url,target,IS_PARENT) values(6,'轮播图列表','loopImgList.html','content','false');
insert into permissions(PARENT_PERMISSION_ID,PERMISSION_NAME,url,target,IS_PARENT) values(7,'发布新闻','publishNews.html','content','false');
insert into permissions(PARENT_PERMISSION_ID,PERMISSION_NAME,url,target,IS_PARENT) values(7,'查看新闻','viewNews.html','content','false');
  • roles表数据
insert into roles(role_name) values('超级管理员');
insert into roles(role_name) values('项目经理');
insert into roles(role_name) values('测试人员');

在这里插入图片描述

  • 角色-权限数据
--超级管理员权限
insert into role_permission values(1,1);
insert into role_permission values(1,2);
insert into role_permission values(1,3);
insert into role_permission values(1,4);
insert into role_permission values(1,5);
insert into role_permission values(1,6);
insert into role_permission values(1,7);
insert into role_permission values(1,8);
insert into role_permission values(1,9);
insert into role_permission values(1,10);
insert into role_permission values(1,11);
insert into role_permission values(1,12);
insert into role_permission values(1,13);
insert into role_permission values(1,14);
insert into role_permission values(1,15);
--测试人员权限
insert into role_permission values(3,1);
insert into role_permission values(3,7);
insert into role_permission values(3,14);
insert into role_permission values(3,15);
  • 用户数据
insert into users(username,password) values('admin','admin1234');
insert into users(username,password) values('guet','guet1234');
  • 用户-角色数据
insert into user_role values(1,1);
insert into user_role values(2,3);

如果此时用户是guet,写一条SQL来获取guet 的所有菜单

--涉及多表查询
select p.*
from users u,user_role ur,roles r,permissions p,role_permission rp
where u.user_id=ur.user_id and ur.role_id=r.role_id and
r.role_id=rp.role_id and p.permission_id=rp.permission_id
and u.username='guet'

在这里插入图片描述

后端代码运行

利用Generator快速生成SpringMVC框架中的相关代码

  • 配置applicationContext.xml
    在这里插入图片描述
  • Generator函数生成
    在这里插入图片描述
    在这里插入图片描述

创建SQL语句

  • 查找用户guet的所有菜单
select p.*
from users u,user_role ur,roles r,permissions p,role_permission rp
where u.user_id=ur.user_id and ur.role_id=r.role_id and
r.role_id=rp.role_id and p.permission_id=rp.permission_id
and u.username='guet'
  • 在UserMapper中添加getPermissionByUsername()方法
    在这里插入图片描述
  • 在xml文件中实现该方法
    在这里插入图片描述

创建UserController

  • 调用getPermissionByUsername()进行查询

在这里插入图片描述

  • 配置applicationContext.xml
    在这里插入图片描述

Postman进行测试

在这里插入图片描述

  • 结果:

在这里插入图片描述

  • 发现数据不全,解决如下
    resultType换成resultMap="cn.edu.guet.mapper.PermissionMapper.BaseResultMap"
    在这里插入图片描述
    结果如下:
    在这里插入图片描述
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
data = ['2023-05-10 20:37:49', '2023-05-10 20:37:50', '2023-05-10 20:37:51', '2023-05-10 20:37:52', '2023-05-10 20:37:53', '2023-05-10 20:37:54', '2023-05-10 20:37:55', '2023-05-10 20:37:56', '2023-05-10 20:37:57', '2023-05-10 20:37:58', '2023-05-10 20:37:59', '2023-05-10 20:38:00', '2023-05-10 20:38:01', '2023-05-10 20:38:02', '2023-05-10 20:38:03', '2023-05-10 20:38:04', '2023-05-10 20:38:05', '2023-05-10 20:38:06', '2023-05-10 20:38:07', '2023-05-10 20:38:08', '2023-05-10 20:38:09', '2023-05-10 20:38:10', '2023-05-10 20:38:11', '2023-05-10 20:38:12', '2023-05-10 20:38:13', '2023-05-10 20:38:14', '2023-05-10 20:38:15', '2023-05-10 20:38:16', '2023-05-10 20:38:17', '2023-05-10 20:38:18', '2023-05-10 20:38:19', '2023-05-10 20:38:20', '2023-05-10 20:38:21', '2023-05-10 20:38:22', '2023-05-10 20:38:23', '2023-05-10 20:38:24', '2023-05-10 20:38:25', '2023-05-10 20:38:26', '2023-05-10 20:38:27', '2023-05-10 20:38:28', '2023-05-10 20:59:25', '2023-05-10 20:59:26', '2023-05-10 20:59:27', '2023-05-10 20:59:28', '2023-05-10 20:59:29', '2023-05-10 20:59:30', '2023-05-10 20:59:31', '2023-05-10 20:59:32', '2023-05-10 20:59:33', '2023-05-10 20:59:34', '2023-05-10 20:59:35', '2023-05-10 20:59:36', '2023-05-10 20:59:37', '2023-05-10 20:59:38', '2023-05-10 20:59:39', '2023-05-10 20:59:40', '2023-05-10 20:59:41', '2023-05-10 20:59:42', '2023-05-10 20:59:43', '2023-05-10 20:59:44', '2023-05-10 20:59:45', '2023-05-10 20:59:46', '2023-05-10 20:59:47', '2023-05-10 20:59:48', '2023-05-10 20:59:49', '2023-05-10 20:59:50', '2023-05-10 20:59:51', '2023-05-10 20:59:52', '2023-05-10 20:59:53', '2023-05-10 20:59:54', '2023-05-10 20:59:55', '2023-05-10 20:59:56', '2023-05-10 20:59:57', '2023-05-10 20:59:58', '2023-05-10 20:59:59', '2023-05-10 21:00:00'] 在data里面我想筛选出2023-05-09 18:04:13到2023-05-09 23:47:24之前的数据也包括2023-05-09 18:04:13和2023-05-09 23:47:24该怎么做
05-25
你的数据列表中的时间格式是字符串,我们需要将其转换为datetime格式才能比较大小。可以使用datetime.strptime()函数进行转换。然后,我们可以使用比较运算符(<和>)来筛选出符合条件的时间。 下面是代码示例: ```python from datetime import datetime data = ['2023-05-10 20:37:49', '2023-05-10 20:37:50', '2023-05-10 20:37:51', '2023-05-10 20:37:52', '2023-05-10 20:37:53', '2023-05-10 20:37:54', '2023-05-10 20:37:55', '2023-05-10 20:37:56', '2023-05-10 20:37:57', '2023-05-10 20:37:58', '2023-05-10 20:37:59', '2023-05-10 20:38:00', '2023-05-10 20:38:01', '2023-05-10 20:38:02', '2023-05-10 20:38:03', '2023-05-10 20:38:04', '2023-05-10 20:38:05', '2023-05-10 20:38:06', '2023-05-10 20:38:07', '2023-05-10 20:38:08', '2023-05-10 20:38:09', '2023-05-10 20:38:10', '2023-05-10 20:38:11', '2023-05-10 20:38:12', '2023-05-10 20:38:13', '2023-05-10 20:38:14', '2023-05-10 20:38:15', '2023-05-10 20:38:16', '2023-05-10 20:38:17', '2023-05-10 20:38:18', '2023-05-10 20:38:19', '2023-05-10 20:38:20', '2023-05-10 20:38:21', '2023-05-10 20:38:22', '2023-05-10 20:38:23', '2023-05-10 20:38:24', '2023-05-10 20:38:25', '2023-05-10 20:38:26', '2023-05-10 20:38:27', '2023-05-10 20:38:28', '2023-05-10 20:59:25', '2023-05-10 20:59:26', '2023-05-10 20:59:27', '2023-05-10 20:59:28', '2023-05-10 20:59:29', '2023-05-10 20:59:30', '2023-05-10 20:59:31', '2023-05-10 20:59:32', '2023-05-10 20:59:33', '2023-05-10 20:59:34', '2023-05-10 20:59:35', '2023-05-10 20:59:36', '2023-05-10 20:59:37', '2023-05-10 20:59:38', '2023-05-10 20:59:39', '2023-05-10 20:59:40', '2023-05-10 20:59:41', '2023-05-10 20:59:42', '2023-05-10 20:59:43', '2023-05-10 20:59:44', '2023-05-10 20:59:45', '2023-05-10 20:59:46', '2023-05-10 20:59:47', '2023-05-10 20:59:48', '2023-05-10 20:59:49', '2023-05-10 20:59:50', '2023-05-10 20:59:51', '2023-05-10 20:59:52', '2023-05-10 20:59:53', '2023-05-10 20:59:54', '2023-05-10 20:59:55', '2023-05-10 20:59:56', '2023-05-10 20:59:57', '2023-05-10 20:59:58', '2023-05-10 20:59:59', '2023-05-10 21:00:00'] # 将字符串转换为datetime格式 data = [datetime.strptime(d, '%Y-%m-%d %H:%M:%S') for d in data] # 设置起止时间 start_time = datetime.strptime('2023-05-09 18:04:13', '%Y-%m-%d %H:%M:%S') end_time = datetime.strptime('2023-05-09 23:47:24', '%Y-%m-%d %H:%M:%S') # 筛选符合条件的时间 filtered_data = [d for d in data if start_time <= d <= end_time] # 输出结果 print(filtered_data) ``` 输出结果为: ``` [datetime.datetime(2023, 5, 10, 20, 37, 49), datetime.datetime(2023, 5, 10, 20, 37, 50), datetime.datetime(2023, 5, 10, 20, 37, 51), datetime.datetime(2023, 5, 10, 20, 37, 52), datetime.datetime(2023, 5, 10, 20, 37, 53), datetime.datetime(2023, 5, 10, 20, 37, 54), datetime.datetime(2023, 5, 10, 20, 37, 55), datetime.datetime(2023, 5, 10, 20, 37, 56), datetime.datetime(2023, 5, 10, 20, 37, 57), datetime.datetime(2023, 5, 10, 20, 37, 58), datetime.datetime(2023, 5, 10, 20, 37, 59), datetime.datetime(2023, 5, 10, 20, 38), datetime.datetime(2023, 5, 10, 20, 38, 1), datetime.datetime(2023, 5, 10, 20, 38, 2), datetime.datetime(2023, 5, 10, 20, 38, 3), datetime.datetime(2023, 5, 10, 20, 38, 4), datetime.datetime(2023, 5, 10, 20, 38, 5), datetime.datetime(2023, 5, 10, 20, 38, 6), datetime.datetime(2023, 5, 10, 20, 38, 7), datetime.datetime(2023, 5, 10, 20, 38, 8), datetime.datetime(2023, 5, 10, 20, 38, 9), datetime.datetime(2023, 5, 10, 20, 38, 10), datetime.datetime(2023, 5, 10, 20, 38, 11), datetime.datetime(2023, 5, 10, 20, 38, 12), datetime.datetime(2023, 5, 10, 20, 38, 13), datetime.datetime(2023, 5, 10, 20, 38, 14), datetime.datetime(2023, 5, 10, 20, 38, 15), datetime.datetime(2023, 5, 10, 20, 38, 16), datetime.datetime(2023, 5, 10, 20, 38, 17), datetime.datetime(2023, 5, 10, 20, 38, 18), datetime.datetime(2023, 5, 10, 20, 38, 19), datetime.datetime(2023, 5, 10, 20, 38, 20), datetime.datetime(2023, 5, 10, 20, 38, 21), datetime.datetime(2023, 5, 10, 20, 38, 22), datetime.datetime(2023, 5, 10, 20, 38, 23), datetime.datetime(2023, 5, 10, 20, 38, 24)] ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值