要求:
    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基础的核心
    
    总结
        这种转换必须做到零用脑编写

最新文章

  1. 【Python全栈笔记】03 [模块二] 16-17 Oct Set 集合,三目运算
  2. [编辑器]走上atom之路1
  3. SpringMVC系列之基本配置
  4. css样式(二)(伪类 | 伪元素 | 导航 | 图像拼合 | 属性选择器 )
  5. 设置Safari浏览器在标签栏上打开新窗口,而不是弹出一个新窗口
  6. Transact-SQL
  7. 汇编语言中,SP,BP ,SI,DI作用?
  8. mysql @变量和变量的区别及怎么判断记录唯一性
  9. windows消息常量值
  10. 04747_Java语言程序设计(一)_第3章_面向对象编程基础
  11. HDU2005-第几天
  12. Lucene-01:创建索引
  13. 【一天一道LeetCode】#46. Permutations
  14. ButterKnife的使用详解
  15. asp.net core中使用HttpClient实现Post和Get的同步异步方法
  16. JDBC学习笔记之JDBC简介
  17. Golang初练手-多线程网站路径爆破
  18. 用JS实现控制浏览器F12与右键功能
  19. hadoop关联文件处理
  20. Java考试题之四

热门文章

  1. Springboot在有锁的情况下如何正确使用事务
  2. django3上线部署踩的坑
  3. [spring-rabbit]自动配置原理
  4. Mybatis初始化机制
  5. 深入理解java中main方法
  6. 23.合并k个有序链表
  7. Codeforces1514B
  8. BPMN 學習實例
  9. sql_exporter的使用
  10. Noip模拟32(再度翻车) 2021.8.7