菜鸡的Java笔记 - java 多对多映射
要求:
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 多对多映射的更多相关文章
- Java 笔记 —— java 和 javac
Java 笔记 -- java 和 javac h2{ color: #4ABCDE; } a{ text-decoration: none !important; } a:hover{ color: ...
- 菜鸡的Java笔记 - java 断言
断言:assert (了解) 所谓的断言指的是在程序编写的过程之中,确定代码执行到某行之后数据一定是某个期待的内容 范例:观察断言 public class Abnorma ...
- 菜鸡的Java笔记 - java 正则表达式
正则表达式 RegularExpression 了解正则表达式的好处 正则表达式的基础语法 正则表达式的具体操作 content (内容 ...
- 菜鸡的Java笔记 - java 线程常用操作方法
线程常用操作方法 线程的命名操作,线程的休眠,线程的优先级 线程的所有操作方法几乎都在 Thread 类中定义好了 线程的命名和取得 ...
- 菜鸡的Java笔记 - java 访问控制权限
java中四种访问控制权限的使用 内容 在java里面一共定义有四个权限,按照由小到大的顺序:private<defaule<prote ...
- 菜鸡的Java笔记 - java 常用类库
CommonClassLibrary 常用类库 定时调度 定时调度指的是每到一个时刻,都会自动的产生某些特定的操作形式 con ...
- 菜鸡的Java笔记 - java 反射机制
反射机制 1.观察 Class 类的使用 2.利用反射改善工程设计模式 3.反射操作类结构 content (内容) 1. ...
- 菜鸡的Java笔记 java基础类库 BaseClassLibrary
java基础类库 BaseClassLibrary StringBuffer 类的特点 StringBuffer,StringBuilder,String 类之间的关系 ...
- 菜鸡的Java笔记 java数据库编程(JDBC)
java数据库编程(JDBC) 介绍 JDBC 的基本功能 content (内容) 现在几乎所有的项目开发过程之中都不可能离开数据库,所以在java ...
随机推荐
- 当一个 Pod 被调度时,Kubernetes 内部发生了什么?
在 Kubernetes 中,调度是指将 Pod 放置到合适的 Node 上,然后对应 Node 上的 Kubelet 才能够运行这些 Pod . kube-scheduler 是集群控制平面的主要组 ...
- 深入剖析 Spring WebFlux
一.WebFlux 简介 WebFlux 是 Spring Framework5.0 中引入的一种新的反应式Web框架.通过Reactor项目实现Reactive Streams规范,完全异步和非阻塞 ...
- iframe、SameSite与CEF
iframe.SameSite与CEF 背景 本人使用CEF(或是Chrome)来加载开发的前端页面,其中使用iframe嵌入了第三方页面,在第三方页面中需要发送cookie到后端,然而加载会报错,第 ...
- hdu4479 (数学题)(算术基本定理)
题目大意 给定一个三元组\((x,y,z)\)的\(gcd\)和\(lcm\),求可能的三元组的数量是多少,其中三元组是的具有顺序的 其中\(gcd\)和\(lcm\)都是32位整数范围之内 由算术基 ...
- SpringBoot入门05-全局配置文件
springboot全局配置文件作用是设置或修改默认设置 springboot全局配置文件有下面两种方式 application.xml配置文件 示例 server.port=8088 server. ...
- 【错误分析】NX error status: 32
在进行NX 制图里面的表格注释合并单元格时,总是报错NX error status: 32,找了很久都不知道问题所在. 报错提示如下: NXOpen.NXException: NX error sta ...
- Python中的sys.stdin和input、sys.stdout与print--附带讲解剑指offer42-连续子数组的最大和
2020秋招季,终于开始刷第一套真题了,整套试卷就一道编程题,还是剑指offer上的原题,结果答案死活不对,最后干脆直接提交答案算了,看了下别人的答案,原来是输入数据没有获取的原因,不过这个语法sys ...
- 力扣 - 剑指 Offer 39. 数组中出现次数超过一半的数字
题目 剑指 Offer 39. 数组中出现次数超过一半的数字 思路1(排序) 因为题目说一定会存在超过数组长度一半的一个数字,所以我们将数组排序后,位于length/2位置的一定是众数 代码 clas ...
- 从零到熟悉,带你掌握Python len() 函数的使用
摘要:本文为你带来如何找到长度内置数据类型的使用len() 使用len()与第三方数据类型 提供用于支持len()与用户定义的类. 本文分享自华为云社区<在 Python 中使用 len() 函 ...
- 初识HTML01
什么是页面? 页面是基于浏览器的应用程序 页面是数据展示的载体,由浏览器和服务器共同执行产物. 浏览器的功能 向服务器发送用户请求指令 接收并解析数据展示给用户 服务器的功能 存储页面资源 处理并响应 ...