zoukankan      html  css  js  c++  java
  • Java基础_0311: 数据表与简单Java类映射

    数据表与简单Java类映射

    现在假设有如下的关系表,现在要求实现如下的数据关联操作:
    一个部门有多个雇员;
    一个雇员有一个或零个领导

    代码实现

    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;
    	}// setter、getter、无参构造略
    	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;
    	}// setter、getter、无参构造略
    	public String getInfo() {
    		return "雇员编号:" + this.empno + ",姓名:" + this.ename + ",职位:" + this.job
    				+ ",工资:" + this.sal + ",佣金:" + this.comm;
    	}
    }
    
    

    程序关系

    在本程序中可以发现Emp与Dept类之间存在有如下的引用关系定义:

    • 一个雇员属于一个部门,应该在雇员里面保存部门信息,所以在Emp类中定义有一个dept属性,如果有部门则设置一个Dept类的实例化对象,否则设置为null;

    • 一个部门有多个雇员,如果要描述多这个概念应该使用对象数组完成。所以在Dept类中增加一个Emp类的对象数组(Emp emps []);

    • 一个雇员有一个领导,领导信息也就是雇员信息,应该在Emp类中增加领导的自身关联(Emp mgr);

    此时的两个简单Java类已经可以完整的描述出数据表的结构定义,随后将根据结构设置并取得数据,要求可以完成如下的信息输出:

    • 可以根据一个雇员查询他所对应的领导信息和部门信息;
    • 可以根据一个部门取出所有的雇员以及每个雇员的领导信息;

    范例:设置并取得数据

    public class TestDemo {
    	public static void main(String args[]) {
    		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",5000.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("	|- " + ea.getMgr().getInfo()) ;	// 取得雇员领导信息
    		System.out.println("	|- " + ea.getDept().getInfo()) ;	// 取得雇员部门信息
    		// 取得部门的完整信息,包括部门基础信息以及部门中的所有员工	,和每个员工的领导信息
    		System.out.println(dept.getInfo()) ;	// 部门信息
    		for (int x = 0 ; x < dept.getEmps().length ; x ++) {	// 所有雇员信息
    			System.out.println("	|- " + dept.getEmps()[x].getInfo()) ;	// 雇员信息
    			if (dept.getEmps()[x].getMgr() != null) {		// 判断是否存在领导信息
    				System.out.println("		|- " +  dept.getEmps()[x].getMgr().getInfo());// 领导信息
    			}
    		}
    	}
    }
    
    
  • 相关阅读:
    重定向与转发比较
    servlet_5
    servlet_4
    servlet_3
    字符串的操作以及格式化的操作
    2019的Python
    函数2
    函数
    文件操作
    集合 set
  • 原文地址:https://www.cnblogs.com/xuwei1/p/8405350.html
Copyright © 2011-2022 走看看