数据表与简单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