不积跬步,无以至千里;不积小流,无以成江海。

 

Java语言基础

 

Java的数据表与简单Java类的映射

基本映射关系:

数据实体表设计 = 类的定义

表中的字段 = 类的成员属性

表的外键关联 = 引用关联

表的一行数据 = 类的一个实例化对象

表的多行数据 = 对象数组

 

示例一:

表一:部门(部门编号、部门名称、部门位置)

表二:雇员(雇员编号、部门编号、姓名、职位、基本工资、佣金、领导编号

 

关联:

一个部门多个雇员;

一个雇员属于一个部门;

一个雇员有一个领导

 

要求:

根据部门信息获得:

  一个部门完整信息;

  一个部门雇员的完整信息;

  一个雇员对应的领导的信息;

根据雇员信息获得:

  一个雇员所在的部门信息;

  一个雇员的领导信息 

class Dept{
	private long deptno;
	private String dname;
	private String location;
	private Emp emps[]; // 一个部门多个雇员信息
	public Dept(long deptno, String dname, String location) {
		this.deptno = deptno;
		this.dname = dname;
		this.location = location;
	}
	public String getInfo() {
		return "【部门信息】 部门编号:" + this.deptno + "、部门名称:" + this.dname + "、部门位置:" + this.location;
	}
	public void setEmps(Emp emps[]) {
		this.emps = emps;
	}
	public Emp [] getEmps() {
		return this.emps;
	}
}

class Emp{
	private long empno;
	private String ename;
	private String job;
	private double sal;
	private double comm;
	private Dept dept; // 所属部门
	private Emp mgrEmp; // 所属领导
	public Emp(long empno, String ename, String job, double sal, double comm) {
		this.empno = empno;
		this.ename = ename;
		this.job = job;
		this.sal = sal;
		this.comm = comm;
	}
	public String getInfo() {
		return "【雇员信息】 雇员编号:" + this.empno + "、雇员姓名:" + this.ename + "、雇员职位:" + this.job + "、基本工资" + this.sal + "、佣金:" + this.comm;
	}
	public void setDept(Dept dept) {
		this.dept = dept;
	}
	public void setMgr(Emp mgrEmp) {
		this.mgrEmp = mgrEmp;
	}
	public Dept getDept() {
		return this.dept;
	}
	public Emp getMgr() {
		return this.mgrEmp;
		
	}
}

public class CompDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 定义实例化对象,此时并没有关联定义
		Dept dept = new Dept(10, "财务部", "上海");
		Emp empA = new Emp(10000L, "Jiang", "clerk", 10000.0, 0.0);
		Emp empB = new Emp(10000L, "Wen", "manager", 20000.0, 0.0);
		Emp empC = new Emp(10000L, "Jie", "president", 30000.0, 0.0);
		// 为对象进行关联设置
		// 设置雇员与部门关联
		empA.setDept(dept);
		empB.setDept(dept);
		empC.setDept(dept);
		// 设置雇员与领导关联
		empA.setMgr(empB);
		empB.setMgr(empC);
		// 部门与雇员
		dept.setEmps(new Emp[] {empA, empB, empC});
		// 根据关系获取数据
		// 部门信息
		System.out.println(dept.getInfo());
		// 部门的雇员信息
		for (int i = 0; i < dept.getEmps().length; i++) {
			System.out.println("|-" + dept.getEmps()[i].getInfo());
			// 雇员领导信息
			if(dept.getEmps()[i].getMgr() != null) {
				System.out.println("   |-" + dept.getEmps()[i].getMgr().getInfo());
			}
		}
		System.out.println("--------------------------------");
		// 根据雇员获取部门信息
		System.out.println(empA.getDept().getInfo());
		// 根据雇员获取领导
		System.out.println(empA.getMgr().getInfo());

	}

}

  程序输出:

【部门信息】 部门编号:10、部门名称:财务部、部门位置:上海
|-【雇员信息】 雇员编号:10000、雇员姓名:Jiang、雇员职位:clerk、基本工资10000.0、佣金:0.0
   |-【雇员信息】 雇员编号:10000、雇员姓名:Wen、雇员职位:manager、基本工资20000.0、佣金:0.0
|-【雇员信息】 雇员编号:10000、雇员姓名:Wen、雇员职位:manager、基本工资20000.0、佣金:0.0
   |-【雇员信息】 雇员编号:10000、雇员姓名:Jie、雇员职位:president、基本工资30000.0、佣金:0.0
|-【雇员信息】 雇员编号:10000、雇员姓名:Jie、雇员职位:president、基本工资30000.0、佣金:0.0
--------------------------------
【部门信息】 部门编号:10、部门名称:财务部、部门位置:上海
【雇员信息】 雇员编号:10000、雇员姓名:Wen、雇员职位:manager、基本工资20000.0、佣金:0.0

 

示例二:

 

表一:用户(用户ID、姓名) 

表二:角色(角色ID、名称)

表三:权限(权限ID、角色ID、名称)

 

关联:

 一个用户可以有多个角色;

一个角色可以有多个用户;

一个角色可以有多个权限。

 

要求:

 一个用户可以找到对应的角色,以及每个角色对应的权限;

根据角色找到该角色下的所有权限,以及用于此角色的所有用户信息;

根据一个权限找到拥有此权限的所有用户信息。

class Member{
	private String mid;
	private String name;
	private Role roles[]; // 一个用户拥有多个角色
	public Member(String mid, String name) {
		this.mid = mid;
		this.name = name;
	}
	public String getInfo() {
		return "【用户信息】mid = " + this.mid + "、name = " + this.name;
	}
	public void setRole(Role roles[]) {
		this.roles = roles;
	}
	public Role [] getRole() {
		return this.roles;
	}
	
}
class Role{
	private long rid;
	private String title;
	private Member mems[]; // 一个角色有多个用户
	private Privilege privileges[]; //一个角色拥有多个权限
	public Role(long rid, String title) {
		this.rid = rid;
		this.title = title;
	}
	public String getInfo() {
		return "【角色信息】rid = " + this.rid + "、title = " + this.title;
	}
	public void setMem(Member mems[]) {
		this.mems = mems;
	}
	public void setPriv(Privilege privileges[]) {
		this.privileges = privileges;
	}
	public Member [] getMem() {
		return mems;
	}
	public Privilege [] getPriv() {
		return privileges;
	}
	
}
class Privilege{
	private long pid;
	private String title;
	private Role roles[]; // 一个权限属于多个角色
	public Privilege(long pid, String title) {
		this.pid = pid;
		this.title = title;
	}
	public String getInfo() {
		return "【权限信息】 pid = " + this.pid + "、title = " + this.title;
	}
	public void setRole(Role roles[]) {
		this.roles = roles;
	}
	public Role [] getRole() {
		return roles;
	}
}
public class JavaDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// 根据结构设置对象数据
		Member memA = new Member("a", "Jiang");
		Member memB = new Member("b", "Wen");
		Role roleA = new Role(1L, "系统配置");
		Role roleB = new Role(2L, "备份管理");
		Role roleC = new Role(3L, "人事管理");
		Privilege privA = new Privilege(1000L, "系统初始化");
		Privilege privB = new Privilege(1001L, "系统维护");
		Privilege privC = new Privilege(2001L, "备份员工数据");
		Privilege privD = new Privilege(2002L, "备份部门数据");
		Privilege privE = new Privilege(3001L, "编辑员工信息");
		Privilege privF = new Privilege(3002L, "浏览员工信息");
		// 增加角色与权限的对应关系
		roleA.setPriv(new Privilege[] {privA, privB});
		roleB.setPriv(new Privilege[] {privC, privD});
		roleC.setPriv(new Privilege[] {privE, privF});
		// 增加权限与角色的对应关系
		privA.setRole(new Role[] {roleA});
		privB.setRole(new Role[] {roleA});
		privC.setRole(new Role[] {roleB});
		privD.setRole(new Role[] {roleB});
		privE.setRole(new Role[] {roleC});
		privF.setRole(new Role[] {roleC});
		// 增加用户与角色的对应关系
		memA.setRole(new Role[] {roleA, roleB});
		memB.setRole(new Role[] {roleA, roleB, roleC});
		roleA.setMem(new Member[] {memA, memB});
		roleB.setMem(new Member[] {memA, memB});
		roleC.setMem(new Member[] {memB});
		System.out.println("---------通过用户查找信息---------");
		System.out.println(memA.getInfo());
		for (int i = 0; i < memA.getRole().length; i++) {
			System.out.println("--" + memA.getRole()[i].getInfo());
			for (int j = 0; j < memA.getRole()[i].getPriv().length; j++) {
				System.out.println("----" + memA.getRole()[i].getPriv()[j].getInfo());
			}
		}
		System.out.println("---------通过角色查找信息---------");
		System.out.println(roleB.getInfo());
		System.out.println("浏览此角色下的权限信息");
		for (int i = 0; i < roleB.getPriv().length; i++) {
			System.out.println("--" + roleB.getPriv()[i].getInfo());
		}
		System.out.println("浏览此角色下的用户信息");
		for (int i = 0; i < roleB.getMem().length; i++) {
			System.out.println("--" + roleB.getMem()[i].getInfo());
		}
		System.out.println("---------通过权限查找用户信息---------");
		System.out.println(privA.getInfo());
		for (int i = 0; i < privA.getRole().length; i++) {
			for (int j = 0; j < privA.getRole()[i].getMem().length; j++) {
				System.out.println(privA.getRole()[i].getMem()[j].getInfo());
			}
			
		}
	}

}

 

posted on 2020-05-18 16:35  smile学子  阅读(225)  评论(0编辑  收藏  举报