数据表与简单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());
}
}
}
}