数据表与简单Java类映射
现在假设有如下的关系表,现在要求实现如下的数据关联操作:
一个部门有多个雇员;
一个雇员有一个或零个领导;
程序关系
在本程序中可以发现Emp与Dept类之间存在有如下的引用关系定义:一个雇员属于一个部门,应该在雇员里面保存部门信息,所以在Emp类中定义有一个dept属性,如果有部门则设置一个Dept类的实例化对象,否则设置为null;
一个部门有多个雇员,如果要描述多这个概念应该使用对象数组完成。所以在Dept类中增加一个Emp类的对象数组(Emp emps []);
一个雇员有一个领导,领导信息也就是雇员信息,应该在Emp类中增加领导的自身关联(Emp mgr);
此时的两个简单Java类已经可以完整的描述出数据表的结构定义,随后将根据结构设置并取得数据,要求可以完成如下的信息输出:
可以根据一个雇员查询他所对应的领导信息和部门信息;
可以根据一个部门取出所有的雇员以及每个雇员的领导信息;
PS:(中间为了省事,用系统的构造方法;红色的都是很经典的数据链)
package com.smxy; import java.util.Arrays; class Dept{ private int id; private String name; private String loc; private Emp emps[]; public Dept(int id, String name, String loc) { // TODO Auto-generated constructor stub this.id=id; this.name=name; this.loc=loc; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getLoc() { return loc; } public void setLoc(String loc) { this.loc = loc; } public Emp[] getEmps() { return emps; } public void setEmps(Emp[] emps) { this.emps = emps; } @Override public String toString() { return "Dept [id=" + id + ", name=" + name + ", loc=" + loc + "]"; } } class Emp{ private int id; private String ename; private String job; private double sal; private double comm; private Dept dept; private Emp mar; public Emp(int id, String ename, String job, double sal, double comm) { super(); this.id = id; this.ename = ename; this.job = job; this.sal = sal; this.comm = comm; } public Emp getMar() { return mar; } public void setMar(Emp mar) { this.mar = mar; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public double getSal() { return sal; } public void setSal(double sal) { this.sal = sal; } public double getComm() { return comm; } public void setComm(double comm) { this.comm = comm; } public Dept getDept() { return dept; } public void setDept(Dept dept) { this.dept = dept; } @Override public String toString() { return "Emp [id=" + id + ", ename=" + ename + ", job=" + job + ", sal=" + sal + ", comm=" + comm + "]"; } } public class Lei { public static void main(String args[]) { Dept dept = new Dept(10,"ABC","beijing"); Emp ea = new Emp(1,"李华","员工",800.0,100.0); Emp eb = new Emp(2,"张三","经理",12800.0,10000.0); Emp ec = new Emp(3,"王五","CEO",18800.0,100000.0); ea.setMar(eb);//李华的上司张三 eb.setMar(ec);//张三的上司王五 System.out.println(ea.getMar().toString()); System.out.println(ea.getMar().getMar().toString()); System.out.println("--------------------------------"); dept.setEmps(new Emp[]{ea,eb,ec}); for(int i=0;i<dept.getEmps().length;i++){ System.out.println(dept.getEmps()[i].toString()); if(dept.getEmps()[i].getMar()!=null){ System.out.println("\t"+dept.getEmps()[i].getMar().toString()); } } } }