Java学习笔记----数据表与简单Java类映射

该程序展示了如何根据数据库关系表创建Java对象模型,包括部门(Dept)和雇员(Emp)类之间的关联。一个部门可以有多个雇员,雇员有一个领导,并且属于一个部门。代码详细演示了如何设置和获取这些关联数据,以及如何根据这些关联打印出雇员、领导和部门的信息。
摘要由CSDN通过智能技术生成

对于如上的关系表,现在要求实现如下的数据关联:

  • 一个部门有多个雇员
  • 一个雇员有一个或零个领导 

部门表(dept):部门编号(deptno)、部门名称(dname)、部门位置(loc);

雇员表(emp):雇员编号(empno)、姓名(ename)、职位(job)、工资(sal)、佣金(comm)、领导编号(mgr)、部门编号(deptno)

例.代码实现

class Dept{
    private int deptno;
    private String dname;
    private String loc;
    private Emp emps[];
    public Dept(int 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 emps;
    }
    public String getInfo(){
        return "部门编号:" + this.deptno + "; 名称:" + this.dname + "; 位置:" + this.loc;
    }
}
class Emp{
    private int empno;
    private String ename;
    private String job;
    private double sal;
    private double comm;
    private Dept dept;
    private Emp mgr;    //表示雇员对应的领导
    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 void setMgr(Emp mgr){
        this.mgr = mgr;
    }
    public Emp getMgr(){
        return this.mgr;
    }
    public void setDept(Dept dept){
        this.dept = dept;
    }
    public Dept getDept(){
        return this.dept;
    }
    public String getInfo(){
        return "雇员编号:" + this.empno + "; 姓名:" + this.ename + "; 职位:" + this.job
        + "; 工资:" + this.sal + "; 佣金:" + this.comm; 
    }
}

本程序中可以发现Emp类和Dept类中存在如下引用关系:

  • 一个雇员属于一个部门,应该在雇员里面保存部门信息,因此在Emp类中定义一个dept属性,如果有部门则设置一个Dept类的实例化对象,否则设置为null;
  • 一个部门有多个雇员,要描述这个概念,应该使用对象数组完成,因此在Dept类中设置一个Emp类的对象数组;
  • 一个雇员有一个领导,领导信息也是雇员信息,因此在Emp类中增加领导的自身关联

例.设置并取得数据

public class TestDemo{
    public static void main(String args[]){
        //一、根据表结构描述设置数据
        //1.产生各自的独立的对象
        Dept dept = new Dept(10,"ACCOUNTING","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",50000.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());
            }
        }
    }
}
雇员编号:7369; 姓名:SMITH; 职位:CLERK; 工资:800.0; 佣金:0.0
        |-雇员编号:7902; 姓名:FORD; 职位:MANAGER; 工资:2450.0; 佣金:0.0
        |-部门编号:10; 名称:ACCOUNTING; 位置:NEW YORK
部门编号:10; 名称:ACCOUNTING; 位置:NEW YORK
        |-雇员编号:7369; 姓名:SMITH; 职位:CLERK; 工资:800.0; 佣金:0.0
                |-雇员编号:7902; 姓名:FORD; 职位:MANAGER; 工资:2450.0; 佣金:0.0
        |-雇员编号:7902; 姓名:FORD; 职位:MANAGER; 工资:2450.0; 佣金:0.0
                |-雇员编号:7839; 姓名:KING; 职位:PRESIDENT; 工资:50000.0; 佣金:0.0
        |-雇员编号:7839; 姓名:KING; 职位:PRESIDENT; 工资:50000.0; 佣金:0.0

本程序首先根据表的结构进行数据以及数据关联的配置,然后在数据取出时会根据表的结构进行取出;例如:通过部门可以找到对应的领导和所在部门,以及通过部门可以找到部门中的所有雇员

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值