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 [] ; ...
随机推荐
- SVN 删除误上传到服务器的文件
使用Axure软件的时候,不小心把一些无用的文档也提交到了SVN上了. 当更新服务器上的文件到本地,然后删除误提交的文件时,出现了一个错误,见下图: 错误:cannot verify lock o ...
- 【XLL 框架库函数】 TempErr/TempErr12
创建一个包含了 Excel 工作表错误的临时 XLOPER/XLOPER12 原型 LPXLOPER TempErr(WORD err); LPXLOPER12 TempErr12(BOOL err) ...
- 删除安装的 cocoapods 的缓存方法
清除 Cocoapods 本地缓存 特殊情况下,由于网络或者别的原因,通过 cocoapods 下载的文件可能会有问题.这时候可以删除 Cocoapods 的缓存(~/Library/Caches/C ...
- 转:Autodesk 2017软件下载+注册机+破解方法(持续更新)
转载自http://blog.sina.com.cn/s/blog_710225790102w03e.html Autodesk 2017安装步骤: 安装Autodesk 2017相关软件 使用序列号 ...
- Caffe初试(二)windows下的cafee训练和测试mnist数据集
一.mnist数据集 mnist是一个手写数字数据库,由Google实验室的Corinna Cortes和纽约大学柯朗研究院的Yann LeCun等人建立,它有60000个训练样本集和10000个测试 ...
- javascript 核心语言笔记- 3 - 类型、值和变量
JavaScript 中的数据类型分为两类:原始类型(primitive type)和对象类型(object type).原始类型包括数字.字符串和布尔值 JavaScript 中有两个特殊的原始值: ...
- Java 8相关
语言生态系统中的所有语言都有优胜劣汰的压力.虽然Java语言当前还在健康发展,但是保不定哪天就完蛋了. Java8增加的新特性从根本上来说是为了提高搬砖的姿势和效率. 多核编程的更好支持. 方法成为一 ...
- jvm中的年轻代 老年代 持久代 gc
虚拟机中的共划分为三个代:年轻代(Young Generation).老年代(Old Generation)和持久代(Permanent Generation).其中持久代主要存放的是Java类的类信 ...
- Hibernate和IBatis对比
[转自]http://blog.csdn.net/ya2dan/article/details/7396598 项目也做过几个, 使用IBatis就做一个项目, 基本上都是使用Hibernate, 也 ...
- PHP生成验证码及单实例应用
/* note: * this 指向当前对象本身 * self 指向当前类 * parent 指向父类 */ /* 验证码工具类 * @author pandancode * @date 20150- ...