数据表与简单java类的映射
要求通过java程序描述出dept-emp关系,使用字段:
- dept :deptno,dname
- emp :empno,ename,job,sal,deptno,mgr;
在dept-emp表的关系里面存在如下关联:
- 一个部门有多个雇员;
- 一个雇员有一个或者零个领导;
编码步骤:
第一步:实现基本字段的转换;
第二步:解决外键关系
|- 一个雇员属于一个部门,应该在雇员里面保存部门信息。
|- 一个部门有多个雇员(使用数组)
|- 一个雇员有一个领导
第三步:设置并取得数据
|- 设置数据:
- 产生各自的对立对象
- 设置雇员和领导的关系
- 设置雇员和部门之间的关系
|- 取出数据:
- 可以根据雇员信息查询其所对应的领导信息和部门信息。
- 可以根据一个部门取出所有的雇员以及每个雇员的领导信息
程序:
class Dept{
private int deptno;
private String dname;
private Emp emp[];//一个部门有多个雇员 注意定义类型
public Dept(int deptno,String dname){
this.deptno = deptno;
this.dname = dname;
}
public void setEmp(Emp[] emp) {
this.emp = emp;
}
public Emp[] getEmp() {
return this.emp;
}
public String getinfo(){
return "部门编号:"+this.deptno+"、部门名称"+this.dname;
}
}
class Emp{
private int empno;
private String ename;
private double sal;
private Dept dept;//一个雇员属于一个部门
private Emp mgr;//一个雇员有一个领导
public Emp(int empno,String ename,double sal){
this.empno = empno;
this.ename = ename;
this.sal = sal;
}
public void setMgr(Emp mgr) {
this.mgr = mgr;
}
public Emp getMgr() {
return mgr;
}
public void setDept(Dept dept) {
this.dept = dept;
}
public Dept getDept() {
return dept;
}
public String getinfo(){
return "雇员编号:"+this.empno+"、雇员名字:"+this.ename+"、薪水:"+this.sal;
}
}
public class day03 {
public static void main(String args[]) {
//产生各自的对立对象
Dept a = new Dept(01, "研发部门");
Emp ea = new Emp(1001, "柳旭", 5000.0);
Emp eb = new Emp(1002, "铭铭", 4000.0);
Emp ec = new Emp(1003, "旭旭", 3000.0);
//设置雇员和领导之间的关系
ea.setMgr(eb);
eb.setMgr(eb);
//设置雇员和部门之间的关系
ea.setDept(a);
a.setEmp(new Emp[]{ea, eb, ec});//将数据作为数组传递给a.setEmp()方法。
//取出数据
//可以根据雇员信息查询其所对应的领导和部门信息
System.out.println(ea.getMgr().getinfo());
System.out.println(ea.getDept().getinfo());
//可以根据一个部门取出所有的雇员以及每个雇员的领导信息
System.out.println(a.getinfo());
for (int x = 0; x < a.getEmp().length; x++) {
//a.getEmp()返回的是Emp[]数组
System.out.println(" " + a.getEmp()[x].getinfo());
if ( a.getEmp()[x].getMgr() != null) {//避免空指针异常
System.out.println("领导:" + a.getEmp()[x].getMgr().getinfo());
}
}
}
}