要求:
    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. yolov5实战之二维码检测

    目录 1.前沿 2.二维码数据 3.训练配置 3.1数据集设置 3.2训练参数的配置 3.3网络结构设置 3.4训练 3.5结果示例 附录:数据集下载 1.前沿 之前总结过yolov5来做皮卡丘的检测 ...

  2. Superior Scheduler:带你了解FusionInsight MRS的超级调度器

    摘要:Superior Scheduler是一个专门为Hadoop YARN分布式资源管理系统设计的调度引擎,是针对企业客户融合资源池,多租户的业务诉求而设计的高性能企业级调度器. 本文分享自华为云社 ...

  3. Pandas高级教程之:时间处理

    目录 简介 时间分类 Timestamp DatetimeIndex date_range 和 bdate_range origin 格式化 Period DateOffset 作为index 切片和 ...

  4. 洛谷3288 SCOI2014方伯伯运椰子(分数规划+spfa)

    纪念博客又一次爆炸了 首先,对于本题中,我们可以发现,保证存在正整数解,就表示一定费用会降低.又因为一旦加大的流量,费用一定会变大,所以总流量一定是不变的 那么我们这时候就需要考虑一个退流的过程 对于 ...

  5. IEEE754浮点数的转换

    将十进制数转换为单精度浮点数 如何将十进制数转换为单精度浮点数参考 首先要知道 IEEE浮点标准:V=(-1)^s * M * 2^E 1.符号(sign)s决定这个数是负数(s=1)还是正数,0(s ...

  6. UnboundLocalError: local variable 'range' referenced before assignment

    1. 报错信息 UnboundLocalError: local variable 'range' referenced before assignment 2. 代码 class Car(): &q ...

  7. Coursera Deep Learning笔记 改善深层神经网络:优化算法

    笔记:Andrew Ng's Deeping Learning视频 摘抄:https://xienaoban.github.io/posts/58457.html 本章介绍了优化算法,让神经网络运行的 ...

  8. BUAA 2020 软件工程 软件分析案例作业

    Author: 17373051 郭骏 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业-软件分析案例 我在这个课程的目标是 学习软件 ...

  9. 晶振在电路设计时关于负载电容CL大小取值特别需要注意什么?

    在无源晶体的设计中,经常遇到负载电容CL的大小取值.晶振设计与精度的提高.KHz无源晶振的停止.音叉晶体谐振器的精度漂移以及精度和无源晶振在高温下的精度是否等于低温的精度烦忧的问题等. 无源晶体振荡器 ...

  10. 大神教零基础入门如何快速高效的学习c语言开发

    零基础如果更快更好的入门C语言,如何在枯燥的学习中找到属于自己的兴趣,如果把学习当成一种事务性的那以后的学习将会很难有更深入的进步,如果带着乐趣来完成学习那将越学越有意思这样才会让你有想要更深入学习的 ...