mysql用户权限表join_MyBatis映射利用mysql left join 解决N+1查询问题
1.权限是几乎每个系统都需要的
2.一般在用户请求某个url的时候,都需要验证用户是否拥有该url的访问权限
3.最简单的权限系统需要 用户表,角色表,用户角色表,权限表,角色权限表
# Host: 127.0.0.1 (Version: 5.6.22)
# Date: 2015-04-09 10:52:58
# Generator: MySQL-Front 5.3 (Build 4.13)
/*!40101 SET NAMES utf8 */;
#
# Source for table "privilege"
#
CREATE TABLE `privilege` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`url` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
#
# Data for table "privilege"
#
INSERT INTO `privilege` VALUES (1,'产品增加','/product/add'),(2,'产品删除','/product/delete'),(3,'产品修改','/product/update'),(4,'产品查询','/product/query');
#
# Source for table "role"
#
CREATE TABLE `role` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
#
# Data for table "role"
#
INSERT INTO `role` VALUES (1,'admin'),(2,'manager'),(3,'guest');
#
# Source for table "role_priv"
#
CREATE TABLE `role_priv` (
`role_id` int(11) NOT NULL,
`priv_id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
#
# Data for table "role_priv"
#
INSERT INTO `role_priv` VALUES (1,1),(2,1),(1,3);
#
# Source for table "user"
#
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
#
# Data for table "user"
#
INSERT INTO `user` VALUES (1,'jack'),(2,'jaychang'),(3,'jasaon'),(4,'lucy'),(5,'marry');
#
# Source for table "user_role"
#
CREATE TABLE `user_role` (
`user_id` int(11) NOT NULL DEFAULT '0',
`role_id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
#
# Data for table "user_role"
#
INSERT INTO `user_role` VALUES (1,1),(1,3),(3,2),(2,2);
4.表对应的实体类
放在了sample包下
public class Privilege {
private Integer id;
private String name;
private String url;
...省略get,set方法
}
public class User {
private Integer id;
private String name;
private List roles;
...省略get,set方法
}
public class Role {
private Integer id;
private String name;
private List privileges;
...省略get,set方法
}
5.mybatis配置文件
/p>
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
6.UserMapper.xml
/p>
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
select u.id as user_id,u.name as user_name,r.id as role_id,
r.name as role_name,p.id as priv_id,p.name as priv_name,p.url as priv_url
from user u
left join user_role ur on u.id = ur.user_id
left join role r on r.id = ur.role_id
left join role_priv rp on r.id = rp.role_id
left join privilege p on p.id = rp.priv_id
where u.id = #{id}
测试
List users = sqlSession.selectList("selectUserById", 1L);
for (User u : users) {
System.out.println("用户名:" + u.getName());
List roles = u.getRoles();
if (null != roles) {
for (Role role : roles) {
System.out.println(" 拥有角色:" + role.getName());
List privs = role.getPrivileges();
if (null != privs && privs.size() > 0) {
System.out.println(" 该角色【" + role.getName()
+ "】,拥有的权限:");
for (Privilege priv : privs) {
System.out.println(" " + priv.getName()
+ "," + priv.getUrl());
}
}
}
}
}
mysql用户权限表join_MyBatis映射利用mysql left join 解决N+1查询问题相关推荐
- MySQL用户权限(Host,User,Password)管理(mysql.user)
1:新增用户: 注:mysql数据库下user表中,Host和User为两个主键列(primary key),已经各版本下非空未设置默认字段. 登录后,切换db: mysql> use mysq ...
- mysql的越过用户权限表登录
mysql的越过用户权限表登录 昨天突然有个朋友对了说,不小心把mysql数据库的mysql库的user表给误删了,让我帮帮他. 当是我就想到了越过用户权限表启动服务的选项skip-grant-tab ...
- 教您如何查看MySQL用户权限
教您如何查看MySQL用户权限 如果需要查看MySQL用户权限,应该如何实现呢?下面就为您介绍查看MySQL用户权限的方法,并对授予MySQL用户权限的语句进行介绍,供您参考. 查看MySQL用户权限 ...
- 您如何查看MySQL用户权限
如果需要查看MySQL用户权限,应该如何实现呢?下面就为您介绍查看MySQL用户权限的方法,并对授予MySQL用户权限的语句进行介绍,供您参考. 查看MySQL用户权限: show grants fo ...
- mysql服务器权限说明,MySQL用户权限管理详解
用户权限管理主要有以下作用: 1. 可以限制用户访问哪些库.哪些表 2. 可以限制用户对哪些表执行SELECT.CREATE.DELETE.DELETE.ALTER等操作 3. 可以限制用户登录的IP ...
- mysql 用户划表_mysql用户表
mysql5.6中mysql.user表 一些特殊符号: 在myql中% *是通配符, ::1 是IPv6格式的 127.0.0.1 Host列指定了允许用户登录所使用的IP,比如user=root ...
- MySQL 用户权限详细汇总
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 1,My ...
- MySQL用户权限详细汇总
1,MySQL权限体系 mysql 的权限体系大致分为5个层级: 全局层级: 全局权限适用于一个给定服务器中的所有数据库.这些权限存储在mysql.user表中.GRANT ALL ON .和REVO ...
- 学了mysql用户权限我直接把管理员禁闭了
一 前言 本篇内容是关于MYSQL 数据库管理系统对数据库用户的权限相关的操作:学习本篇的基础是知识追寻者之前发布的MYSQL系列文章(公众号读者看专辑) 本套教程 MYSQL介绍(1) MYSQL检 ...
最新文章
- 那些年用过的Redis集群架构(含面试解析)
- 【CSS进阶】CSS 颜色体系详解
- 少儿编程语言python-青少儿编程语言Python的学习紧迫性
- Linux文件系统映像:Initranfs 和 Initrd
- ios 日期时间打印
- 数据库设计:pd工程创建数据库表
- 大数据时代的移动即时通讯
- 用Python代码实现五子棋游戏
- MySQL,优化查询的方法
- JSP简介和会话技术
- linux mp4box安装,视频处理利器 MP4Box常用的12个命令
- java cmyk转rgb_图片 CMYK转RGB 代码
- IP代理池Proxy_Pool使用教程(Windows版)
- Android 8.0系统透明主题适配解决办法
- 基于C#的ArcEngine二次开发教程(03):ArcEngine的接口查询技术底层分析
- 垂钓之王hd_它的专业人士指南,以阻止网络钓鱼
- Gazebo仿真进阶教程之传感器高斯噪声(二)
- “冰块比马桶水脏”让人透心凉
- centos ssh免密登录 多台互相免密登录
- 模型理论5_英语学术论文摘要语步结构自动识别模型的构建
热门文章
- 12 种主流编程语言输出“ Hello World ”,把我给难住了!
- 太真实了:程序员等级图鉴
- 靓仔落泪,性能问题定位难倒我了
- Spark精华问答 | Spark做大规模高性能数值计算可以吗?
- redhat 6.5怎么安装mysql5.6_centos 6.5安装mysql5.6
- 115配额怎么增加_笔电、平板接口少怎么办,ORICO八合一多功能扩展坞助你一臂之力...
- Git gitignore文件讲解
- Sonarqube+maven 分析代码
- tomcat9控制台中文乱码
- 使用自己的域名解析CSDN博客