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、总结
可以点任意给出的数据表直接转换为类的形式,并可以设置并取出所有的数据。