Java简单类——多对多映射
class Admin {
private String aid ;
private String password ;
private Role role ;
public Admin(String aid,String password) {
this.aid =aid ;
this.password = password ;
}
public void setRole(Role role) {
this.role = role ;
}
public Role getRole() {
return this.role ;
}
public String getInfo() {
return "管理员编号:" + this.aid + ",密码:" + this.password ;
}
}
class Role {
private int rid ;
private String title ;
private Admin admins [] ;
private Group groups [] ;
public Role(int rid,String title) {
this.rid = rid ;
this.title = title ;
}
public void setAdmins(Admin [] admins) {
this.admins = admins ;
}
public void setGroups(Group groups[]) {
this.groups = groups ;
}
public Group [] getGroups() {
return this.groups ;
}
public Admin [] getAdmins() {
return this.admins ;
}
public String getInfo() {
return "角色编号:" + this.rid + ",名称:" + this.title ;
}
}
class Group {
private int gid ;
private String title ;
private Role roles [] ;
private Action actions [] ;
public Group(int gid,String title) {
this.gid = gid ;
this.title = title ;
}
public void setRoles(Role roles[]) {
this.roles = roles ;
}
public void setActions(Action actions[]) {
this.actions = actions ;
}
public Action [] getActions() {
return this.actions ;
}
public Role [] getRoles() {
return this.roles ;
}
public String getInfo() {
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 getInfo() {
return "权限编号:" + this.aid + ",名称:" + this.title + ",路径:" + this.url ;
}
}
public class TestAdmin {
public static void main (String args[]) {
//第一步,设置完整关系
//1、准备出若干个对象
Admin a1 = new Admin("admin","hello") ;
Admin a2 = new Admin("guest","hello") ;
Admin a3 = new Admin("jiang","hello") ;
Role r1 = new Role(1,"系统管理员") ;
Role r2 = new Role(2,"信息管理员") ;
Group g1 = new Group(10,"信息管理") ;
Group g2 = new Group(11,"用户管理") ;
Group g3 = new Group(12,"数据管理") ;
Group g4 = new Group(13,"接口管理") ;
Group g5 = new Group(14,"备份管理") ;
Action at01 = new Action(1001,"新闻发布","-") ;
Action at02 = new Action(1002,"新闻列表","-") ;
Action at03 = new Action(1003,"新闻审核","-") ;
Action at04 = new Action(1004,"增加用户","-") ;
Action at05 = new Action(1005,"用户列表","-") ;
Action at06 = new Action(1006,"登录日志","-") ;
Action at07 = new Action(1007,"雇员数据","-") ;
Action at08 = new Action(1008,"部门数据","-") ;
Action at09 = new Action(1009,"公司数据","-") ;
Action at10 = new Action(1010,"服务传输","-") ;
Action at11 = new Action(1011,"短信平台","-") ;
Action at12 = new Action(1012,"全部备份","-") ;
Action at13 = new Action(1013,"局部备份","-") ;
//2、设置对象之间的基本关系
//设置管理员与角色
a1.setRole(r1) ;
a2.setRole(r2) ;
a3.setRole(r2) ;
r1.setAdmins(new Admin[] {a1}) ;
r2.setAdmins(new Admin[] {a2,a3}) ;
//设置角色与管理员组
r1.setGroups(new Group[] {g1,g2,g3,g4,g5}) ;
r2.setGroups(new Group[] {g1,g2}) ;
g1.setRoles(new Role[] {r1,r2}) ;
g2.setRoles(new Role[] {r1,r2}) ;
g3.setRoles(new Role[] {r1}) ;
g4.setRoles(new Role[] {r1}) ;
g5.setRoles(new Role[] {r1}) ;
//设置管理员组与权限
g1.setActions(new Action[] {at01,at02,at03}) ;
g2.setActions(new Action[] {at04,at05,at06}) ;
g3.setActions(new Action[] {at07,at08,at09}) ;
g4.setActions(new Action[] {at10,at11}) ;
g5.setActions(new Action[] {at12,at13}) ;
at01.setGroup(g1) ;
at02.setGroup(g1) ;
at03.setGroup(g1) ;
at04.setGroup(g2) ;
at05.setGroup(g2) ;
at06.setGroup(g2) ;
at07.setGroup(g3) ;
at08.setGroup(g3) ;
at09.setGroup(g3) ;
at10.setGroup(g4) ;
at11.setGroup(g4) ;
at12.setGroup(g5) ;
at13.setGroup(g5) ;
//第二步:取出数据内容
System.out.println(a1.getInfo()) ;
System.out.println("\t|-" + a1.getRole().getInfo()) ;
for (int x = 0 ;x < a1.getRole().getGroups().length ;x ++ ){
System.out.println("\t|-" + a1.getRole().getGroups()[x].getInfo()) ;
for (int y = 0 ;y< a1.getRole().getGroups()[x].getActions().length ;y ++ ){
System.out.println("\t\t\t|-" + a1.getRole().getGroups()[x].getActions()[y].getInfo()) ;
}
}
System.out.println("-----------------------------------------------------------------") ;
System.out.println(g2.getInfo()) ;
for (int x = 0 ;x < g2.getRoles().length ; x ++ ){
System.out.println("\t|-" + g2.getRoles()[x].getInfo()) ;
for (int y = 0 ;y < g2.getRoles()[x].getAdmins().length ;y ++ ){
System.out.println("\t\t|-" + g2.getRoles()[x].getAdmins()[y].getInfo()) ;
}
}
}
}
这次使用了win7 自带的PowerShell,运行结果如下

Java简单类——多对多映射的更多相关文章
- 数据表与简单java类——多对多映射
给定一张Meber和Product表,得到如下信息: 1.获取一个用户访问的所有商品信息 2.获取一个商品被哪些用户浏览过的信息 package Mapping_transformation; cla ...
- Java实体类之间的映射(多对多关系)
多对对的映射,可以用学生和课程进行演示.一个学生可以选择多个课程,一个课程又对应了多个学生 定义学生类 class Stu{ private String name; private String n ...
- java 简单类
package 面向对象编程_封装性; //1.类名称必须存在有意义,例如Book.Emp //2.类之中所有的属性必须用private封装,封装后的属性必须提供有setter和getter方法 // ...
- 第四周总结和实验二Java简单类与对象
实验目的 掌握类的定义,熟悉属性.构造函数.方法的使用,掌握用类作为类型声明变量和方法返回值: 理解类和对象的区别,掌握构造函数的使用,熟悉通过对象名引用实列的方法和属性: 理解static修饰对类. ...
- 第四周课程总结与第二次实验报告(Java简单类与对象)
1.写一个名为Rectangle的类表示矩形.其属性包括宽width.高height和颜色color,width和height都是double型的,而color则是String类型的.要求该类具有: ...
- Java简单类——双向一对多映射
class Item { // 父栏目 private int iid ; private String name ; private String note ; private Subitem su ...
- Java实体类之间的映射(一对多关系)
通过栗子,一个人可以有多辆汽车 定义人 这个类 人可以有很多辆汽车,类中车属性用数组 class Person{ private String name; private String phone ...
- Java简单类——一对多映射(省、市)
class Province { private int pid ; private String name ; private City cities [] ; public Province (i ...
- Java简单类(部门、领导、雇员关系)
class Dept { private int deptno ; private String dname ; private String loc ; private Emp emps [] ; ...
随机推荐
- 【安装MongoDB】CentOS7 下安装NodeJs+Express+MongoDB+Redis
MongoDB,V3.2版本,官网说的很详细,见链接:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/ 1.创建 ...
- kali2.0中dradis的使用方法
启动脚本位于:/usr/lib/dradis下,再该目录下有一个start.sh文件,执行后,可以在浏览器中输入https://localhost:3004即可打开dradis的web接口 切记前面h ...
- js对文本框特殊字符串过滤
HTML 中 onkeyup="stripscript(this)"; function stripscript(obj) { var s = $(obj).val(); var ...
- Spring+SpringMvc+Mybatis框架集成搭建教程一(项目创建)
一.框架搭建环境 Spring 4.2.6.RELEASE SpringMvc 4.2.6.RELEASE Mybatis 3.2.8 Maven 3.3.9 Jdk 1.7 Idea 15.04 二 ...
- 最小生成树的Kruskal算法实现
最近在复习数据结构,所以想起了之前做的一个最小生成树算法.用Kruskal算法实现的,结合堆排序可以复习回顾数据结构.现在写出来与大家分享. 最小生成树算法思想:书上说的是在一给定的无向图G = (V ...
- Java中简单的操作(if语句、常用操作符、switch语句、变量赋值等)
---------------------if语句介绍--------------------------------------------------- class IfDemo { public ...
- T-SQL函数总结
T-SQL函数的类别和描述. 函数类别 作用 聚合函数 执行的操作是将多个值合并为一个值.例如COUNT.SUM.MIN 和 MAX. 配置函数 是一种标量函数,可返回有关配置设置的信息. 转换函数 ...
- CozyRSS开发记录4-抽屉效果订阅列表栏
CozyRSS开发记录4-抽屉效果订阅列表栏 1.LeftDrawerContent实现侧滑菜单 抽屉效果,又有人称做侧滑菜单,在手机和平板应用里也是广泛用到.这里,决定把订阅列表栏用抽屉效果实现,而 ...
- 使用python解析Json字符串-获取Json字符串关键字
import json data = { "statusCode": 0, "data": { ", "height": &quo ...
- 中间人攻击(MITM)姿势总结
相关学习资料 http://www.cnblogs.com/LittleHann/p/3733469.html http://www.cnblogs.com/LittleHann/p/3738141. ...