菜鸡的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 ...
随机推荐
- 5.深入TiDB:Insert 语句
本文基于 TiDB release-5.1进行分析,需要用到 Go 1.16以后的版本 我的博客地址:https://www.luozhiyun.com/archives/605 这篇文章我们看一下 ...
- 基于python深度学习的apk风险预测脚本
基于python深度学习的apk风险预测脚本 为了有效判断安卓apk有无恶意操作,利用python脚本,通过解包apk文件,对其中xml文件进行特征提取,通过机器学习构建模型,预测位置的apk包是否有 ...
- 题解 [HNOI2007]分裂游戏
题目传送门 题目大意 有趣的取石子游戏即将开始. 有 \(n\) 堆石头,编号为 \(0,1,2,...,n-1\).两个人轮流挑石头. 在每个回合中,每个人选择三堆编号为 \(i,j,k\) 的石头 ...
- 开源协同OA办公平台教程:O2OA服务管理中,接口的调用权限
本文介绍O2OA服务管理中,接口的权限设定和调用方式. 适用版本:5.4及以上版本 创建接口 具有服务管理设计权限的用户(具有ServiceManager角色或Manager角色)打开" ...
- logging的基本使用
logging模块打印log的时候主要有一下几个,级别顺序:CRITICAL>ERROR>WARNING>INFO>DEBUG: 1.日志输出到file: import log ...
- Coursera Deep Learning笔记 结构化机器学习项目 (上)
参考:https://blog.csdn.net/red_stone1/article/details/78519599 1. 正交化(Orthogonalization) 机器学习中有许多参数.超参 ...
- 第1次 Beta Scrum Meeting
本次会议为Beta阶段第1次Scrum Meeting会议 会议概要 会议时间:2021年5月29日 会议地点:「腾讯会议」线上进行 会议时长:0.5小时 会议内容简介:本次会议为Beta阶段第1次会 ...
- UltraSoft - Beta - Scrum Meeting 5
Date: May 21st, 2020. Scrum 情况汇报 进度情况 组员 负责 今日进度 q2l PM.后端 修复了课程通知链接的bug Liuzh 前端 暂无 Kkkk 前端 增加消息中心板 ...
- 手写vue-router & 什么是Vue插件
博文分享 这篇文章你可以学习到: 实现一个自己的vue-router 了解什么是Vue的插件 学习b站大佬后做的笔记整理和源码实现 1.1.3一步一步带你弄懂vue-router核心原理及实现哔哩哔哩 ...
- Node.js躬行记(13)——MySQL归档
当前我们组管理着一套审核系统,除了数据源是服务端提供的,其余后台管理都是由我们组在维护. 这个系统就是将APP中的各类社交信息送到后台,然后有专门的审核人员来判断信息是否合规,当然在送到后台之前已经让 ...