數據表與簡單java類映射

簡單的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
相關文章
相關標籤/搜索