【Mybatis】Mybatis之xml开发—用户角色权限关联案例

news2025/1/13 15:29:22

目录

要求:使用xml开发完成需求查询。

数据库

需求


要求:使用xml开发完成需求查询。

数据库

-- 用户表
create table sys_user(
  `user_id` int primary key auto_increment comment '用户ID',
	`user_name` varchar(50) comment '用户名',
	`password` varchar(32) comment '用户密码' ,
	`desc` varchar(200) comment '个人介绍'
);

insert into sys_user(`user_id`,`user_name`,`password`,`desc`) values(1,'jack','1234','这是一个男生');
insert into sys_user(`user_id`,`user_name`,`password`,`desc`) values(2,'rose','1234','这是一个女生');
insert into sys_user(`user_id`,`user_name`,`password`,`desc`) values(3,'rose','1234','这是一个女生');

-- 角色表
create table sys_role(
  `role_id` varchar(32) primary key comment '角色ID',
	`role_name` varchar(50) comment '角色名',
	`desc` varchar(200) comment '角色介绍'
);

insert into sys_role(`role_id`,`role_name`,`desc`) values('r001','管理员','拥有所有的权限');
insert into sys_role(`role_id`,`role_name`,`desc`) values('r002','财务经理','拥有所有财务权限');
insert into sys_role(`role_id`,`role_name`,`desc`) values('r003','开发经理','拥有所有开发权限');
insert into sys_role(`role_id`,`role_name`,`desc`) values('r004','销售经理','拥有所有销售权限');


-- 权限表
CREATE TABLE `sys_permission`  (
  `perm_id` varchar(32) primary key comment '权限ID',
  `perm_name` varchar(50) comment '权限名字' ,
  `parent_id` varchar(32) comment '父权限ID',
  `path` varchar(255) comment '权限路径'
);

INSERT INTO `sys_permission` VALUES ('p001', '财务管理', '0', '/finance/');
INSERT INTO `sys_permission` VALUES ('p002', '查询财务', 'p001', '/finance/list');
INSERT INTO `sys_permission` VALUES ('p003', '添加财务', 'p001', '/finance/add');
INSERT INTO `sys_permission` VALUES ('p004', '修改财务', 'p001', '/finance/update');
INSERT INTO `sys_permission` VALUES ('p005', '删除财务', 'p001', '/finance/delete');
INSERT INTO `sys_permission` VALUES ('p006', '开发管理', '0', '/develop/');
INSERT INTO `sys_permission` VALUES ('p007', '查询开发', 'p006', '/develop/list');
INSERT INTO `sys_permission` VALUES ('p008', '添加开发', 'p006', '/develop/add');
INSERT INTO `sys_permission` VALUES ('p009', '修改开发', 'p006', '/develop/update');
INSERT INTO `sys_permission` VALUES ('p010', '删除开发', 'p006', '/develop/delete');
INSERT INTO `sys_permission` VALUES ('p011', '销售管理', '0', '/sale/');
INSERT INTO `sys_permission` VALUES ('p012', '查询销售', 'p011', '/sale/list');
INSERT INTO `sys_permission` VALUES ('p013', '添加销售', 'p011', '/sale/add');
INSERT INTO `sys_permission` VALUES ('p014', '修改销售', 'p011', '/sale/update');


CREATE TABLE `sys_user_role`  (
  `user_id` int,
  `role_id` varchar(32),
  CONSTRAINT `sys_ur_role` FOREIGN KEY (`role_id`) REFERENCES `sys_role` (`role_id`),
  CONSTRAINT `sys_ur_user` FOREIGN KEY (`user_id`) REFERENCES `sys_user` (`user_id`)
) ;

INSERT INTO `sys_user_role` VALUES (1, 'r001');
INSERT INTO `sys_user_role` VALUES (2, 'r002');
INSERT INTO `sys_user_role` VALUES (2, 'r003');
INSERT INTO `sys_user_role` VALUES (2, 'r004');
INSERT INTO `sys_user_role` VALUES (3, 'r003');



CREATE TABLE `sys_role_permission`  (
  `role_id` varchar(32),
  `perm_id` varchar(32),
  CONSTRAINT `sys_rp_permission` FOREIGN KEY (`perm_id`) REFERENCES `sys_permission` (`perm_id`),
  CONSTRAINT `sys_rp_role` FOREIGN KEY (`role_id`) REFERENCES `sys_role` (`role_id`)
) ;

INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r001', 'p001');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r001', 'p002');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r001', 'p003');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r001', 'p004');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r001', 'p005');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r001', 'p006');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r001', 'p007');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r001', 'p008');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r001', 'p009');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r001', 'p010');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r001', 'p011');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r001', 'p012');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r001', 'p013');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r001', 'p014');

INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r002', 'p001');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r002', 'p002');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r002', 'p003');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r002', 'p004');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r002', 'p005');

INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r003', 'p006');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r003', 'p007');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r003', 'p008');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r003', 'p009');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r003', 'p010');

INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r004', 'p011');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r004', 'p012');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r004', 'p013');
INSERT INTO `sys_role_permission`(`role_id`,`perm_id`) VALUES ('r004', 'p014');

需求

练习1:

  • 查询所有用户,同时查询

    • 每个用户对应的角色,同时查询

      • 查询每个角色对应的一级权限,同时查询

        • 每个一级权限对应的二级权限


练习2:

  • 查询指定若干用户,同时查询

    • 每个用户对应的角色,同时查询

      • 查询每个角色对应的一级权限,同时查询

        • 每个一级权限对应的二级权限

如有需要答案的请查看相应资源。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/491748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试——性能指标

登录功能示例: 并发用户数500; 响应时间2S; TPS到500; CPU不得超过75%; 性能指标有哪些? 响应时间 并发用户数 TPS CPU 内存 磁盘吞吐量 网络吞吐量 移动端FPS 移动端耗电量 APP启动时间 性能…

windows11 安装多个mysql8

安装一个mysql请参考:windows系统安装mysql8 解压缩版安装顺序_csdn_aspnet的博客-CSDN博客 下载mysql:MySQL :: Download MySQL Community Server 下载后解压到你指定的目录,我下载的非最新版,如图: 在文件夹下面建一…

【SpringMVC】| 控制器异常处理机制及实现流程

MVC目录 一. 🦁 前言二. 🦁 控制器异常处理Ⅰ. 单个控制器异常处理Ⅱ. 全局异常处理Ⅲ. 自定义异常处理 三. 🦁 最后 一. 🦁 前言 咱们来探索一下控制器异常处理流程,以及如何来实现它。 二. 🦁 控制器异…

烈日炎炎的夏天骑行,怎么预防中暑及中暑后怎么处理?

随着天气的逐渐炎热,夏季骑行逐渐成为了人们喜爱的一项运动。但是,在享受骑行乐趣的同时,我们也要时刻关注身体健康,预防中暑等意外情况的发生。下面,本文将从多个角度为大家讲解夏季骑行中暑的预防和处理方法。 一、选…

音频环回实验

音频环回实验 一、WM8978简介 WM8978是一个低功耗、高质量的立体声多媒体数字信号编译码器,它结合了一个高质量的立体声音DAC和ADC,带有灵活的音频线输入、麦克风输入和音频输出处理 WM8978内部有58个寄存器。每一个寄存器的地址位为7位,数…

SpringCloud基础知识

1、什么是SpringCloud SpringCloud分布式微服务架构的一站式解决方案,是多种微服务架构落地技术的集合体(微服务全家桶)。 查看官网:https://spring.io/ Spring Cloud本身不是新的框架,是一个全家桶式的技术栈&…

销售管理系统哪种好?

一、如何选择销售管理系统 销售管理软件其实就是我们常说的CRM软件,在激烈的市场竞争下,传统的销售管理模式不能满足有效跟进和及时维护客户的需求,在挖掘新客户和增强客户忠诚度方面也出现了一定弊端,因此销售管理软件应运而生&…

作者等级与权益说明

「创收计划」3.0上线,全面助力资源优质创作者 创:代表创作者收:代表收获 截止目前,文库资源频道已开放20细分领域,每个领域又进行详细的细分,在每个细分的品类上,我们已经收获了来自广大创作者…

基于AT89C51单片机的简易计算器的设计与仿真

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87755299?spm1001.2014.3001.5503 源码获取 本设计是以单片机AT89C51为核心的简易计算器设计,要通过芯片AT89C51实现计算器程序运行来完成加、减、乘…

python--读取TRMM-3B43月平均降水绘制气候态空间分布图(陆地区域做掩膜)

python–读取TRMM-3B43月平均降水绘制气候态空间分布图(陆地区域做掩膜) 成果展示 TRMM降水数据介绍 热带降雨测量任务(The Tropical Rainfall Measuring Mission,TRMM)是美国国家航空航天局(NASA)和日本国家太空发展署(National Space Dev…

刚转岗做项目经理,无从下手,怎么办?

01 背景 最近在知乎平台看到一个问题是这么说的: 或许很多人都不是从工作开始就是项目专员再到项目经理这里一步一步过来,而是从其他岗位比如售前、销售、产品经理、程序员等转到项目经理岗位的。 那么对于这些人来说,做项目经理会有什么问…

第一次找实习, 什么项目可以给自己加分(笔记)

什么样的项目能简历加分、对找工作有帮助 基本特征: 一个特征是“硬核基础软件”,另一个为很实用的APP。 硬核基础软件 独立实现一个操作系统的kerne内核(操作系统的内部引擎) 北美计算机名校会让学生用一个学期的时间实现一个…

冒险岛私人服务器详细架设教程

冒险岛Online   《冒险岛Online》是由韩国WIZET和NEXON制作开发的一款2D横版卷轴网络游戏,于2004年7月24日在中国大陆正式上线,由盛大游戏负责运营。   故事以被“黑暗力量”不断入侵,因而进入了“浑沌期”的世界为背景,勇士们…

微服务知识3

Gateway核心概念 路由(route) 网关中最基础的部分,路由信息包括一个ID,一个目的URI,一组谓词工厂,一组Filter组成。如果谓词为真,则说明请求的URL和配置的路由匹配 谓词(preducates) 即java.util.function.Predica…

atbf中imu数据的读取与处理方式

一、说明 本文为作者在阅读atbf源码的过程中,对atbf中imu数据的读取和处理方式的个人理解,可能存在不对之处,意在抛砖引玉,请各位老师多多指正; 二、数据读取流程图 1、target NEUTRONRCF435SE 不同的target所定义…

C++中的queue与priority_queue

文章目录 queuequeue的介绍queue的使用 priority_queuepriority_queue介绍priority_queue使用 queue queue的介绍 队列是一种容器适配器,专门用于上下文先进先出的操作中。队列的特性是先进先出,从容器的一端插入,另一端提取元素。   队列…

Java17的性能优势是否足以让它取代Java8?

随着时间的推移,Java不断地进行更新和发展,以满足不断变化的业务需求。目前,Java8已经成为了一个非常成熟的版本,并且在各个领域广泛应用。但是,Java17也早已发布,并且是Java 11以来又一个LTS(长期支持)版本…

vmware虚拟机安装k8s(之前已经安装过docker)

1、安装开始 先执行:curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add 再执行更改源:echo "deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main" >> /etc/apt/sources.list …

单向链表——C语言实现

哈喽,大家好,今天我们学习的是数据结构里的链表,这里主要讲的是不带哨兵卫头节点的单向链表,下篇将会继续带大家学习双向链表。 目录 1.链表的概念 2.单向链表接口的实现 2.1动态申请一个节点 2.2单链表打印 2.3单链表尾插 …

强大的editplus 5.7

EditPlus是一款由韩国 Sangil Kim (ES-Computing)出品的小巧但是功能强大的可处理文本、HTML和程序语言的Windows编辑器,你甚至可以通过设置用户工具将其作为C,Java,Php等等语言的一个简单的IDE。 EditPlus(文字编辑器&#xff0…