MENU

数据表与简单java映射转换

• November 14, 2020 • 面向对象编程

数据表与简单java映射转换

实际开发中,数据表与简单JAVA类的映射关系如下:

  1. 数据实体表设计 = 类的定义
  2. 表中的字段 = 类的成员属性
  3. 表的外键关联 = 引用关联
  4. 表的一行记录 = 类的一个实例化对象
  5. 表的多行记录 = 对象数组

现有两个数据表

从数据表的关系之中可以发现有如下的关系存在:

  • 一个部门有多个雇员
  • 一个雇员属于一个部门
  • 一个雇员有一个领导

将数据表转换为简单JAVA类的定义形式:
根据部门信息获得以下内容:

  1. 一个部门的完整信息
  2. 一个部门之中所有雇员的完整信息
  3. 一个雇员对应的领导的信息

根据雇员信息获得以下内容:

  1. 一个雇员所在部门信息
  2. 一个雇员对应的领导信息

解决步骤

先抛开所有的关联字段不看,写出类的基本组成,而后再通过引用配置关联字段的关系

一、定义基本的类(emp和dept)
二、配置所有关联字段
三、在主方法中,根据关系进行类的定义
四、根据关系获取信息

源代码如下

class Emp{
    private long id;
    private String name;
    private String job;
    private double sal;
    private double comm;
    /**
     *所属部门
     */
    private Dept dept;
    /**
     *所属领导
     */
    private Emp mgr;
    public Dept getDept() {
        return dept;
    }
    public void setDept(Dept dept) {
        this.dept = dept;
    }
    public Emp getMgr() {
        return mgr;
    }
    public void setMgr(Emp mgr) {
        this.mgr = mgr;
    }
    public Emp(long id, String name, String job, double sal, double comm) {
        this.id = id;
        this.name = name;
        this.job = job;
        this.sal = sal;
        this.comm = comm;
    }
    public Emp(){
    }
    public String getInfo(){
        return "【雇员信息】雇员编号:"+this.id+"   雇员姓名:"+this.name+"   雇员职位:"+this.job+"   雇员工资:"+this.sal+"   雇员佣金:"+this.comm;
    }
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    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;
    }
}

class Dept{
    private long id;
    private String name;
    private String location;
    
    public Emp[] getEmps() {
        return emps;
    }
    public void setEmps(Emp[] emps) {
        this.emps = emps;
    }
    //多个雇员信息
    private Emp emps[];
    public Dept(){
    }
    public Dept(long id, String name, String location) {
        this.id = id;
        this.name = name;
        this.location = location;
    }
    public String getInfo(){
        return "【部门信息】部门编号:"+this.id+"   部门名称:"+this.name+"   部门位置:"+this.location;
    }
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getLocation() {
        return location;
    }
    public void setLocation(String location) {
        this.location = location;
    }
}

public class Main {
    public static void main(String[] args) {
        //三、根据关系进行类的定义,定义出各个的实例化对象,此时并没有任何的关联定义
        Dept dept = new Dept(10,"财务部","上海");
        Emp empA = new Emp(7369L,"SMITH","CLARK",800.00,0.0);
        Emp empB = new Emp(7370L,"FORD","MANAGER",2450.00,0.0);
        Emp empC = new Emp(7371L,"KING","PRESIDENT",5000.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());
        for (int i = 0; i < dept.getEmps().length; i++) {
            System.out.println("\t|-"+dept.getEmps()[i].getInfo());
            //获取雇员领导信息
            if(dept.getEmps()[i].getMgr()!=null) {
                System.out.println("\t\t|-"+dept.getEmps()[i].getMgr().getInfo());
            }
        }
        System.out.println("---------------------------");
        //根据雇员获取部门信息
        System.out.println(empB.getDept().getInfo());
        //根据与雇员获取领导信息
        System.out.println(empB.getMgr().getInfo());
    }
}

运行结果:


代码编译器:IntelliJ IDEA 2020.02

Archives QR Code Tip
QR Code for this page
Tipping QR Code