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查询问题相关推荐

  1. MySQL用户权限(Host,User,Password)管理(mysql.user)

    1:新增用户: 注:mysql数据库下user表中,Host和User为两个主键列(primary key),已经各版本下非空未设置默认字段. 登录后,切换db: mysql> use mysq ...

  2. mysql的越过用户权限表登录

    mysql的越过用户权限表登录 昨天突然有个朋友对了说,不小心把mysql数据库的mysql库的user表给误删了,让我帮帮他. 当是我就想到了越过用户权限表启动服务的选项skip-grant-tab ...

  3. 教您如何查看MySQL用户权限

    教您如何查看MySQL用户权限 如果需要查看MySQL用户权限,应该如何实现呢?下面就为您介绍查看MySQL用户权限的方法,并对授予MySQL用户权限的语句进行介绍,供您参考. 查看MySQL用户权限 ...

  4. 您如何查看MySQL用户权限

    如果需要查看MySQL用户权限,应该如何实现呢?下面就为您介绍查看MySQL用户权限的方法,并对授予MySQL用户权限的语句进行介绍,供您参考. 查看MySQL用户权限: show grants fo ...

  5. mysql服务器权限说明,MySQL用户权限管理详解

    用户权限管理主要有以下作用: 1. 可以限制用户访问哪些库.哪些表 2. 可以限制用户对哪些表执行SELECT.CREATE.DELETE.DELETE.ALTER等操作 3. 可以限制用户登录的IP ...

  6. mysql 用户划表_mysql用户表

    mysql5.6中mysql.user表 一些特殊符号: 在myql中% *是通配符, ::1 是IPv6格式的 127.0.0.1 Host列指定了允许用户登录所使用的IP,比如user=root ...

  7. MySQL 用户权限详细汇总

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 1,My ...

  8. MySQL用户权限详细汇总

    1,MySQL权限体系 mysql 的权限体系大致分为5个层级: 全局层级: 全局权限适用于一个给定服务器中的所有数据库.这些权限存储在mysql.user表中.GRANT ALL ON .和REVO ...

  9. 学了mysql用户权限我直接把管理员禁闭了

    一 前言 本篇内容是关于MYSQL 数据库管理系统对数据库用户的权限相关的操作:学习本篇的基础是知识追寻者之前发布的MYSQL系列文章(公众号读者看专辑) 本套教程 MYSQL介绍(1) MYSQL检 ...

最新文章

  1. 那些年用过的Redis集群架构(含面试解析)
  2. 【CSS进阶】CSS 颜色体系详解
  3. 少儿编程语言python-青少儿编程语言Python的学习紧迫性
  4. Linux文件系统映像:Initranfs 和 Initrd
  5. ios 日期时间打印
  6. 数据库设计:pd工程创建数据库表
  7. 大数据时代的移动即时通讯
  8. 用Python代码实现五子棋游戏
  9. MySQL,优化查询的方法
  10. JSP简介和会话技术
  11. linux mp4box安装,视频处理利器 MP4Box常用的12个命令
  12. java cmyk转rgb_图片 CMYK转RGB 代码
  13. IP代理池Proxy_Pool使用教程(Windows版)
  14. Android 8.0系统透明主题适配解决办法
  15. 基于C#的ArcEngine二次开发教程(03):ArcEngine的接口查询技术底层分析
  16. 垂钓之王hd_它的专业人士指南,以阻止网络钓鱼
  17. Gazebo仿真进阶教程之传感器高斯噪声(二)
  18. “冰块比马桶水脏”让人透心凉
  19. centos ssh免密登录 多台互相免密登录
  20. 模型理论5_英语学术论文摘要语步结构自动识别模型的构建

热门文章

  1. 12 种主流编程语言输出“ Hello World ”,把我给难住了!
  2. 太真实了:程序员等级图鉴
  3. 靓仔落泪,性能问题定位难倒我了
  4. Spark精华问答 | Spark做大规模高性能数值计算可以吗?
  5. redhat 6.5怎么安装mysql5.6_centos 6.5安装mysql5.6
  6. 115配额怎么增加_笔电、平板接口少怎么办,ORICO八合一多功能扩展坞助你一臂之力...
  7. Git gitignore文件讲解
  8. Sonarqube+maven 分析代码
  9. tomcat9控制台中文乱码
  10. 使用自己的域名解析CSDN博客