簡單的Java類的定義來源於數據表的結構, java
例如:僱員信息表、部門信息表描述的就是僱員或部門的信息,數組
在實際的開發之中,數據表和簡單java類之間的映射關係以下:app
一、 數據實體表設計 = 類的定義;this
二、表中的字段 = 類的成員屬性 ;spa
三、表的一行記錄 = 類的一個實例化對象 ;設計
四、表的多行紀律 = 對象數組 ;code
五、表的外鍵關聯 = 引用關聯 ;orm
假設一個部門和僱員的表:對象
一個部門有多個僱員;blog
一個僱員屬於一個部門;
一個僱員有一個領導;
下面將以上的數據錶轉爲簡單Java類的形式,
1、現要根據部門信息獲取如下數據:
一、一個部門的完整信息;
二、一個部門之中全部僱員的完整信息;
三、一個僱員對應的領導的信息;
2、根據僱員信息得到如下內容:
1.一個僱員所在的部門信息;
2.一個僱員對應的領導信息;
第一步:拋開全部的關聯字段不看,寫出類的基本組成,然後經過引用配置關聯字段的關係
package Mapping_transformation; class Demp { private long deptno ; private String dname ; private String loc ; public Demp(long deptno , String dname ,String loc) { this.deptno = deptno ; this.dname = dname ; this.loc = loc ; } //setter、getter、無參構造略 public String getInfo() { return "【部門信息】部門編號:"+this.deptno+"、部門名稱:"+this.dname +"、部門位置:"+this.loc ; } } class Emp { private long empno ; private String ename ; private String job ; private double sal ; private double comm ; public Emp(long empno ,String ename ,String job , double sal ,double comm) { this.empno = empno ; this.ename = ename ; this.job = job ; this.sal = sal ; this.comm = comm ; } //setter、getter、無參構造略 public String getInfo() { return "【僱員信息】僱員編號:"+this.empno + "、僱員姓名:"+this.ename + "、僱員工做:"+ this.job + "、僱員薪水:"+this.sal + "、僱員佣金"+this.comm ; } }
第二步:配置全部的關聯字段
package Mapping_transformation; class Dept { private long deptno ; private String dname ; private String loc ; private Emp emps[] ; //多個僱員信息 public Dept(long deptno , String dname ,String loc) { this.deptno = deptno ; this.dname = dname ; this.loc = loc ; } public void setEmps(Emp[] emps) { this.emps = emps; } public Emp[] getEmps() { return this.emps ; } //setter、getter、無參構造略 public String getInfo() { return "【部門信息】部門編號:"+this.deptno+"、部門名稱:"+this.dname +"、部門位置:"+this.loc ; } } class Emp { private long empno ; private String ename ; private String job ; private double sal ; private double comm ; private Dept dept ; //所屬部門 private Emp mgr ; //所屬領導 public Emp(long empno ,String ename ,String job , double sal ,double comm) { this.empno = empno ; this.ename = ename ; this.job = job ; this.sal = sal ; this.comm = comm ; } //setter、getter、無參構造略 public String getInfo() { return "【僱員信息】僱員編號:"+this.empno + "、僱員姓名:"+this.ename + "、僱員工做:"+ this.job + "、僱員薪水:"+this.sal + "、僱員佣金"+this.comm ; } public void setDept(Dept dept) { this.dept = dept; } public void setMgr(Emp mgr) { this.mgr = mgr; } public Dept getDept() { return this.dept ; } public Emp getMgr() { return this.mgr ; } }
第三步:根據關係進行類的定義,爲對象進行關聯的設置
public class Demo { public static void main(String[] args) { Dept dept = new Dept(10,"財務部","長沙"); Emp empB = new Emp(001,"A","java工程師",800.00,0.0); Emp empA = new Emp(002,"B","經理",1000.00,0.0); Emp empC = new Emp(003,"C","boss",1200.00,0.0); empA.setDept(dept); empB.setDept(dept); //設置僱員與部門的關聯 empC.setDept(dept); empA.setMgr(empB); //設置僱員與領導的關聯 empB.setMgr(empC); dept.setEmps(new Emp[]{empA,empB,empC}); //部門與僱員 } }
最後:獲取數據所需數據
System.out.println(dept.getInfo()+"\n"); //部門信息 for(int i = 0 ; i < dept.getEmps().length ; i++) { System.out.println(dept.getEmps()[i].getInfo()); //僱員信息 if(dept.getEmps()[i].getMgr()!=null) System.out.println(dept.getEmps()[i].getMgr().getInfo()); //僱員的領導信息 System.out.println(); } System.out.println("------------------------------------------"); System.out.println(empA.getDept().getInfo()); //僱員獲取部門信息 System.out.println(empA.getMgr().getInfo()); //僱員獲取領導信息
【部門信息】部門編號:10、部門名稱:財務部、部門位置:長沙 【僱員信息】僱員編號:二、僱員姓名:B、僱員工做:經理、僱員薪水:1000.0、僱員佣金0.0 【僱員信息】僱員編號:一、僱員姓名:A、僱員工做:java工程師、僱員薪水:800.0、僱員佣金0.0 【僱員信息】僱員編號:一、僱員姓名:A、僱員工做:java工程師、僱員薪水:800.0、僱員佣金0.0 【僱員信息】僱員編號:三、僱員姓名:C、僱員工做:boss、僱員薪水:1200.0、僱員佣金0.0 【僱員信息】僱員編號:三、僱員姓名:C、僱員工做:boss、僱員薪水:1200.0、僱員佣金0.0 ------------------------------------------ 【部門信息】部門編號:10、部門名稱:財務部、部門位置:長沙 【僱員信息】僱員編號:一、僱員姓名:A、僱員工做:java工程師、僱員薪水:800.0、僱員佣金0.0