目的将任意给出的数据表转换成类的形式并且可以设置或取出所有数据
import java.util.Arrays;
/**
* 数据表和简单java类的映射 要求通过java程序描述出dtpt-emp关系 使用字段: dept: deptno(部门编号) dname(部门名称)
* loc(位置); emp : empno(员工编号) ename(员工编号) job(职位) sal(工资) comm(佣金) deptno(部门)
* mgr dept-emp 表的关联分析 1.一个部门有多个雇员 2.一个雇员有一个或0个领导.
*
*/
// 第一步实现基本字段的转换(简单java类)
// 第二步解决外键关系1.一个员工有一个部门2.一个部门有多个员工3.一个雇员有一个领导
//第三步 设置并取得数据
class Dept {
private int deptno;
private String dname;
private String loc;
// 设置部门和员工的关系
private Emp emps[];// 一个部门有多个员工用数组表示
public Emp[] getEmps() {
return emps;
}
public void setEmps(Emp[] emps) {
this.emps = emps;
}
public int getDeptno() {
return deptno;
}
public void setDeptno(int deptno) {
this.deptno = deptno;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
}
public Dept() {
}// 无参构造
public Dept(int deptno, String dname, String loc) {
this.deptno = deptno;
this.dname = dname;
this.loc = loc;
}
// 返回属性结果的方法
public String getInfo() {
return "部门编号:" + this.deptno + ",名称:" + dname + ",位置:" + loc;
}
}
class Emp {
private int empno;
private String ename;
private String job;
private double sal;
private double comm;
// 设置员工和部门的关系
private Dept dept;// 表示对应的部门信息
private Emp mgr;// 领导也是员工包含员工的所有属性
// 领导的setter和getter方法
public Emp getMgr() {
return mgr;
}
public void setMgr(Emp mgr) {
this.mgr = mgr;
}
// dept的setter和getter方法
public Dept getDept() {
return dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}
// setter和getter方法
public int getEmpno() {
return empno;
}
public void setEmpno(int empno) {
this.empno = empno;
}
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 Emp() {
}
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 "员工编号:" + this.empno + ",员工姓名:" + this.ename + ",职位:" + this.job + ",工资:" + this.sal + ",佣金:" + this.comm;
}
}
//以上准备工作完成 主方法设置参数以及调用参数
public class Test002 {
public static void main(String[] args) {
Emp a = new Emp(); //设置一个员工
a.setEmpno(9527); // 设置员工编号
a.setEname("周星星");
a.setJob("程序员");
a.setComm(100);
a.setSal(800);
Emp b = new Emp(9334,"张三","办事员",50,500);
Emp c = new Emp(9001,"上帝","部长",500,1000);
System.out.println(a.getInfo()); //输出员工基本信息
Dept xx = new Dept();//设置一个部门 和基本信息
xx.setDeptno(10086);
xx.setDname("市场部");
xx.setLoc("绵阳");
System.out.println(xx.getInfo()); //输出部门基本信息
b.setMgr(a);//设置领导的关系 e的领导是c
a.setMgr(c);//设置领导的关系 c的领导是a
a.setDept(xx);//设置员工和部门的关系
b.setDept(xx);
c.setDept(xx);
xx.setEmps(new Emp[]{a,b,c});
/**
* 关系设置完成: a b c员工属于xx部门
* a的领导是c. b的领导是a
*
* 取出数据
* 1.根据一个雇员查询他的领导和部门信息
*
*/
System.out.println("a员工信息:"+a.getInfo());
System.out.println("\t|-"+a.getDept().getInfo());
System.out.println("\t|-领导"+a.getMgr().getInfo());
System.out.println("b员工的领导信息:"+b.getMgr().getInfo());
//2.根据一个部门取出雇员以及每个雇员的领导信息
// System.out.println(Arrays.toString(xx.getEmps()));
System.out.println("****************");
System.out.println(xx.getInfo());
//xx.getEmps() 员工有多个所以要遍历数组输出
for(int i=0 ; i<xx.getEmps().length ; i++){
System.out.println("\t|-"+xx.getEmps()[i].getInfo());
if (xx.getEmps()[i].getMgr() != null){
System.out.println("\t\t|-"+xx.getEmps()[i].getMgr().getInfo());
}
}
}
}