要求:
    1.将数据还原为简单java类
    2.数据的输出:
        可以根据一个用户输出它对应的角色以及每个角色对应的权限,以及包含的具体的权限详情:
        一个权限可以输出具备此权限的角色,以及具备此角色的所有管理员,同时输出该权限的所有权限详情
        一个角色可以输出它所包含的管理员,每个管理员对应的具体的权限,以及权限详情
    第一步:数据表转换为简单java类

class User{
private String userid;
private String name;
private String password;
public User(String userid,String name,String password){
this.userid = userid;
this.name = name;
this.password;
}
public String getlnfo(){
return "用户ID:"+this.userid
+",姓名:"+this.name
+",密码:"+this.password;
}
}
class Role{ // 角色
private int rid;
private String title;
public User(int rid,String title){
this.rid = rid;
this.title = title;
}
public String getlnfo(){
return "角色编号:"+this.rid
+",名称:"+this.title;
}
}
class Group{ // 权限
private int gid;
private String title;
public User(int gid,String title){
this.gid = gid;
this.title = title;
}
public String getlnfo(){
return "权限组编号:"+this.gid
+",组名称:"+this.title;
}
}
classAction{// 权限
private int aid;
private String title;
private String url;
public User(int aid,String title,String url){
this.rid = aid;
this.title = title;
this.url = url;
}
public String getlnfo(){
return "权限编号:"+this.aid
+",权限名称:"+this.title
+",路径"+this.url;
}
}
public class manyToManyMapping{
public static void main(String args[]){ } }

第二步:设置关系
        一个角色包含有多个用户,一对多关系
        一个权限组包含多个权限,属于一对多
        一个角色对应有多个权限组,每个权限组可能有多个角色,多对多

class User{
private String userid;
private String name;
private String password;
private Role role;
public User(String userid,String name,String password){
this.userid = userid;
this.name = name;
this.password = password;
}
public void setRole(Role role){
this.role = role;
}
public Role getRole(){
return this.role;
}
public String getlnfo(){
return "用户ID:"+this.userid
+",姓名:"+this.name
+",密码:"+this.password;
}
}
class Role{ // 角色
private int rid;
private String title;
private User users [];
private Group groups[];
public Role(int rid,String title){
this.rid = rid;
this.title = title;
}
public void setGroups(Group groups[]){
this.groups = groups;
}
public Group[] getGroups(){
return this.groups;
}
public void setUser(User users[]){
this.users = users;
}
public User[] getUser(){
return this.users;
}
public String getlnfo(){
return "角色编号:"+this.rid
+",名称:"+this.title;
}
}
class Group{ // 权限组
private int gid;
private String title;
private Action actions[];
private Role roles[];
public Group(int gid,String title){
this.gid = gid;
this.title = title;
}
public void setRoles(Role roles[]){
this.roles = roles;
}
public Role[] getRoles(){
return this.roles;
}
public void setActions(Action actions[]){
this.actions = actions;
}
public Action[] getActions(){
return this.actions;
}
public String getlnfo(){
return "权限组编号:"+this.gid
+",组名称:"+this.title;
}
}
class Action{// 权限
private int aid;
private String title;
private String url;
private Group group;
public Action(int aid,String title,String url){
this.aid = aid;
this.title = title;
this.url = url;
}
public void setGroup(Group group){
this.group = group;
}
public Group getGroup(){
return this.group;
}
public String getlnfo(){
return "权限编号:"+this.aid
+",权限名称:"+this.title
+",路径"+this.url;
}
}
public class manyToManyMapping{
public static void main(String args[]){ } }

分杀完毕。迅速,一定是不需要使用脑子就直接写出来的
    第三步:设置关系

class User{
private String userid;
private String name;
private String password;
private Role role;
public User(String userid,String name,String password){
this.userid = userid;
this.name = name;
this.password = password;
}
public void setRole(Role role){
this.role = role;
}
public Role getRole(){
return this.role;
}
public String getlnfo(){
return "用户ID:"+this.userid
+",姓名:"+this.name
+",密码:"+this.password;
}
}
class Role{ // 角色
private int rid;
private String title;
private User users [];
private Group groups[];
public Role(int rid,String title){
this.rid = rid;
this.title = title;
}
public void setGroups(Group groups[]){
this.groups = groups;
}
public Group[] getGroups(){
return this.groups;
}
public void setUsers(User users[]){
this.users = users;
}
public User[] getUsers(){
return this.users;
}
public String getlnfo(){
return "角色编号:"+this.rid
+",名称:"+this.title;
}
}
class Group{ // 权限组
private int gid;
private String title;
private Action actions[];
private Role roles[];
public Group(int gid,String title){
this.gid = gid;
this.title = title;
}
public void setRoles(Role roles[]){
this.roles = roles;
}
public Role[] getRoles(){
return this.roles;
}
public void setActions(Action actions[]){
this.actions = actions;
}
public Action[] getActions(){
return this.actions;
}
public String getlnfo(){
return "权限组编号:"+this.gid
+",组名称:"+this.title;
}
}
class Action{// 权限
private int aid;
private String title;
private String url;
private Group group;
public Action(int aid,String title,String url){
this.aid = aid;
this.title = title;
this.url = url;
}
public void setGroup(Group group){
this.group = group;
}
public Group getGroup(){
return this.group;
}
public String getlnfo(){
return "权限编号:"+this.aid
+",权限名称:"+this.title
+",路径"+this.url;
}
}
public class manyToManyMapping{
public static void main(String args[]){
//第一步:根据表结构设置关系
//1.定义单独的类对象
User ua = new User("user-a","用户A","hello");
User ub = new User("user-b","用户B","hello");
User uc = new User("user-c","用户C","hello");
//2.定义权限
Action act1 = new Action(1,"新闻管理","naws");
Action act2 = new Action(1,"用户管理","users");
Action act3 = new Action(1,"备份管理","bks");
Action act4 = new Action(1,"缓存管理","caches");
Action act5 = new Action(1,"数据管理","datas");
//3.定义权限组信息
Group g1 = new Group(1,"数据管理");
Group g2 = new Group(2,"人事管理");
Group g3 = new Group(3,"信息管理");
//4.定义角色信息
Role r1 = new Role(10,"超级管理员角色");
Role r2 = new Role(10,"普通管理员角色");
//5.设置权限组与权限的关系,一对多关系
act1.setGroup(g1); // 权限与权限组的关系
act2.setGroup(g1);
act3.setGroup(g2);
act4.setGroup(g2);
act5.setGroup(g3);
g1.setActions(new Action[]{act1,act2});
g2.setActions(new Action[]{act3,act4});
g3.setActions(new Action[]{act5});
//6.权限组与角色关系
r1.setGroups(new Group[]{g1,g2,g3});
r1.setGroups(new Group[]{g2,g3});
g1.setRoles(new Role []{r1});
g2.setRoles(new Role []{r1,r2});
g3.setRoles(new Role []{r1,r2});
//7.定义用户与角色关系
ua.setRole(r1);
ub.setRole(r2);
uc.setRole(r2);
r1.setUsers(new User[]{ua});
r2.setUsers(new User[]{ub,uc});
//第二步:根据要求通过关系取出数据
//可以根据一个用户输出它对应的角色以及每个角色对应的权限,以及包含的具体的权限详情:
System.out.println(ua.getlnfo());
System.out.println("\t|-【角色】"+ua.getRole().getlnfo());
for(int x = 0;x<ua.getRole().getGroups().length;x++){
System.out.println("\t\t|-【权限组】"+ua.getRole().getGroups()[x].getlnfo());
for(int y = 0;y<ua.getRole().getGroups()[x].getActions().length;y++){
System.out.println("\t\t\t|-【权限】"+ua.getRole().getGroups()[x].getActions()[y].getlnfo());
}
}
System.out.println("***************************");
//一个权限可以输出具备此权限的角色,以及具备此角色的所有管理员,同时输出该权限的所有权限详情
System.out.println(act1.getlnfo());
//通过权限找到权限对应的权限组,一个权限组有多个角色
for(int x = 0;x<act1.getGroup().getRoles().length;x++){
System.out.println("\t\t|-【角色】 "+act1.getGroup().getRoles()[x].getlnfo());
for(int y = 0;y<act1.getGroup().getRoles()[x].getUsers().length;y++){
System.out.println("\t\t\t|-【用户】 "+act1.getGroup().getRoles()[x].getUsers()[y].getlnfo());
}
}
System.out.println("***************************");
//一个角色可以输出它所包含的管理员,每个管理员对应的具体的权限,以及权限详情
System.out.println(r1.getlnfo());
for(int x = 0;x<r1.getUsers().length;x++){
System.out.println("\t|-【用户】 "+r1.getUsers()[x].getlnfo());
for(int y = 0;y<r1.getGroups().length;y++){
System.out.println("\t\t|-【权限组】 "+r1.getGroups()[y].getlnfo());
for(int z = 0;z<r1.getGroups()[y].getActions().length;z++){
System.out.println("\t\t\t|-【权限】 "+r1.getGroups()[y].getActions()[z].getlnfo());
}
}
}
}
}

引用,引用,引用 就是java基础的核心
    
    总结
        这种转换必须做到零用脑编写

菜鸡的Java笔记 - java 多对多映射的更多相关文章

  1. Java 笔记 —— java 和 javac

    Java 笔记 -- java 和 javac h2{ color: #4ABCDE; } a{ text-decoration: none !important; } a:hover{ color: ...

  2. 菜鸡的Java笔记 - java 断言

    断言:assert (了解)        所谓的断言指的是在程序编写的过程之中,确定代码执行到某行之后数据一定是某个期待的内容        范例:观察断言 public class Abnorma ...

  3. 菜鸡的Java笔记 - java 正则表达式

    正则表达式 RegularExpression        了解正则表达式的好处        正则表达式的基础语法        正则表达式的具体操作            content (内容 ...

  4. 菜鸡的Java笔记 - java 线程常用操作方法

    线程常用操作方法        线程的命名操作,线程的休眠,线程的优先级            线程的所有操作方法几乎都在 Thread 类中定义好了            线程的命名和取得      ...

  5. 菜鸡的Java笔记 - java 访问控制权限

    java中四种访问控制权限的使用                内容            在java里面一共定义有四个权限,按照由小到大的顺序:private<defaule<prote ...

  6. 菜鸡的Java笔记 - java 常用类库

    CommonClassLibrary 常用类库        定时调度            定时调度指的是每到一个时刻,都会自动的产生某些特定的操作形式                    con ...

  7. 菜鸡的Java笔记 - java 反射机制

    反射机制        1.观察 Class 类的使用        2.利用反射改善工程设计模式        3.反射操作类结构            content (内容)        1. ...

  8. 菜鸡的Java笔记 java基础类库 BaseClassLibrary

    java基础类库 BaseClassLibrary        StringBuffer 类的特点        StringBuffer,StringBuilder,String 类之间的关系   ...

  9. 菜鸡的Java笔记 java数据库编程(JDBC)

    java数据库编程(JDBC)        介绍 JDBC 的基本功能            content (内容)        现在几乎所有的项目开发过程之中都不可能离开数据库,所以在java ...

随机推荐

  1. 当一个 Pod 被调度时,Kubernetes 内部发生了什么?

    在 Kubernetes 中,调度是指将 Pod 放置到合适的 Node 上,然后对应 Node 上的 Kubelet 才能够运行这些 Pod . kube-scheduler 是集群控制平面的主要组 ...

  2. 深入剖析 Spring WebFlux

    一.WebFlux 简介 WebFlux 是 Spring Framework5.0 中引入的一种新的反应式Web框架.通过Reactor项目实现Reactive Streams规范,完全异步和非阻塞 ...

  3. iframe、SameSite与CEF

    iframe.SameSite与CEF 背景 本人使用CEF(或是Chrome)来加载开发的前端页面,其中使用iframe嵌入了第三方页面,在第三方页面中需要发送cookie到后端,然而加载会报错,第 ...

  4. hdu4479 (数学题)(算术基本定理)

    题目大意 给定一个三元组\((x,y,z)\)的\(gcd\)和\(lcm\),求可能的三元组的数量是多少,其中三元组是的具有顺序的 其中\(gcd\)和\(lcm\)都是32位整数范围之内 由算术基 ...

  5. SpringBoot入门05-全局配置文件

    springboot全局配置文件作用是设置或修改默认设置 springboot全局配置文件有下面两种方式 application.xml配置文件 示例 server.port=8088 server. ...

  6. 【错误分析】NX error status: 32

    在进行NX 制图里面的表格注释合并单元格时,总是报错NX error status: 32,找了很久都不知道问题所在. 报错提示如下: NXOpen.NXException: NX error sta ...

  7. Python中的sys.stdin和input、sys.stdout与print--附带讲解剑指offer42-连续子数组的最大和

    2020秋招季,终于开始刷第一套真题了,整套试卷就一道编程题,还是剑指offer上的原题,结果答案死活不对,最后干脆直接提交答案算了,看了下别人的答案,原来是输入数据没有获取的原因,不过这个语法sys ...

  8. 力扣 - 剑指 Offer 39. 数组中出现次数超过一半的数字

    题目 剑指 Offer 39. 数组中出现次数超过一半的数字 思路1(排序) 因为题目说一定会存在超过数组长度一半的一个数字,所以我们将数组排序后,位于length/2位置的一定是众数 代码 clas ...

  9. 从零到熟悉,带你掌握Python len() 函数的使用

    摘要:本文为你带来如何找到长度内置数据类型的使用len() 使用len()与第三方数据类型 提供用于支持len()与用户定义的类. 本文分享自华为云社区<在 Python 中使用 len() 函 ...

  10. 初识HTML01

    什么是页面? 页面是基于浏览器的应用程序 页面是数据展示的载体,由浏览器和服务器共同执行产物. 浏览器的功能 向服务器发送用户请求指令 接收并解析数据展示给用户 服务器的功能 存储页面资源 处理并响应 ...