1、本次的预计讲解的知识

在之前已经给出了简单Java类一定要和数据表的结构对应上,同时外键需要依靠引用开进行关联,于是本次将针对于Java类做一个功能上的扩充。

2、具体内容

要求通过Java程序描述出dept-emp欢喜,使用字段:

·dept:deptno、dname、loc;

·emp:empno、ename、job、sal、comm、deptno、mgr。

在dept-emp表的关系里面存在有如下的关联:

·一个部门有多个雇员;

·一个雇员有一个或零个领导。

第一步:实现基本字段的转换

class Dept {
private int deptno;
private String dname;
private String loc;
//setter、getter、无参构造略
public Dept(int deptno,String dname,String loc) {
this.deptno = deptno;
this.dname = dname;
this.loc = loc;
}
public String getInfo() {
return "部门编号:" + deptno + ",名称" + dname + ",位置" + loc;
}
}
class Emp {
private int empno;
private String ename;
private String job;
private double sal;
private double comm;
//setter、getter、无参构造略
public Emp(int 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 "雇员编号:" + empno + ",姓名" + ename + ",职位" + job + "工资" + sal + "佣金" + comm;
}
}

第二步:解决外键的关系

·一个雇员属于一个部门,应该在雇员里面保存部门信息。

|- Emp类;

public Dept getDept() {
return dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}

|- 一个部门有多个雇员,如果描述多应该用数组完成,修改Dept类

Emp emps []; //多个雇员
public Emp[] getEmps() {
return emps;
}
public void setEmps(Emp[] emps) {
this.emps = emps;
}

·一个雇员有一个领导;

public Emp mgr; //表示雇员对应的领导
public Emp getMgr() {
return mgr;
}
public void setMgr(Emp mgr) {
this.mgr = mgr;
}

所有的匹配的映射关系都已经描述出来了。

第三步:设置并取得数据

对于这种映射的方式一定要分两步完成,第一步根据结构设置数据,第二步根据结构取得数据。

·设置数据

public class Demo {
public static void main(String[] args) {
//第一步:设置数据
//1、产生各自的独立对象
Dept dept = new Dept(10,"ACOUNTING","New York");//部门信息
Emp ea = new Emp(7369,"SMITH","CLERK",800.0,0.0);//雇员信息
Emp eb = new Emp(7902,"FORD","MANAGER",2450.0,0.0);//雇员信息
Emp ec = new Emp(7839,"KING","PRESIDENT",5000.0,0.0);//雇员信息
//2、设置雇员和两领导的关系
ea.setMgr(eb);
eb.setMgr(ec);
//3、设置雇员和部门的关系
ea.setDept(dept);//雇员与部门
eb.setDept(dept);//雇员与部门
ec.setDept(dept);//雇员与部门
dept.setEmps(new Emp[]{ea,eb,ec});
//通过人找到车的信息

}
}

·取出数据,根据给定结构取出数据,要求如下:

|- 可以根据一个雇员查询他所对应的领导信息和部门信息;

System.out.println(ea.getInfo());
System.out.println("\t|-" + ea.getMgr().getInfo());
System.out.println("\t|-" + ea.getDept().getInfo());

|- 可以根据一个部门取出所有的雇员以及每个雇员的领导信息。

System.out.println(dept.getInfo());
for(int x=0; x<dept.getEmps().length; x++) {
System.out.println("\t|-" + dept.getEmps()[x].getInfo());
if(dept.getEmps()[x].getMgr() != null) {
System.out.println("\t\t|-" + dept.getEmps()[x].getMgr().getInfo());
}
}

整个代码都是通过代码链进行数据的取出的。

3、总结

可以点任意给出的数据表直接转换为类的形式,并可以设置并取出所有的数据。