综合案例之数据表与简单映射

综合案例之数据表与简单映射


利用实际数据表实现表与类的操作转化。
要求完成如下两类操作:

  • 第一类:可以根据数据表定义的结构关系进行数据以及引用的设置;
  • 第二类:根据数据表的结构可以取出所需要的数据。
    本次选用dept、emp实现转换操作。开发要求如下:
  1. 本次开发使用以下的数据表与表中的字段:
    • 雇员表(emp):empno,ename,job,sal,comm,mgr,deptno;
    • 部门表(dept):deptno,dname,loc。
  2. 数据的操作要求:
    • 根据表结构完整的设置雇员、经理、部门关系;
    • 可以完成如下的内容输出。
      - 可以输出一个雇员的完整信息,包括雇员的领导、以及所在的部门信息;
      - 可以输出一个部门的完整信息,包括部门的所有雇员信息,以及这个雇员的领导信息。
      第一步:写出基本字段的映射转换
  • 雇员表(emp):empno,ename,job,sal,comm;
  • 部门表(dept):deptno,dname,loc。
class Emp{
	private int empno;
	private String ename;
	private String job;
	private double sal;
	private double comm;
	public Emp(){}
	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.comm;
	}
}
class Dept{
	private int deptno;
	private String dname;
	private String loc;
	public Dept(){}
	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;
	}
}

第二步:设计关系字段
本程序存在有两个关系:

  • 自身关联:mgr字段,mgr也是一个雇员;
  • 外键关联:deptno字段。
class Emp{
	private int empno;
	private String ename;
	private String job;
	private double sal;
	private double comm;
	private Emp mgr;//雇员领导
	private Dept dept;
	public Emp(){}
	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.comm;
	}
	public void setMgr(Emp mgr){
		this.mgr=mgr;
	}
	public void setDept(Dept dept){
		this.dept=dept;
	}
	public Emp getMgr(){
		return this.mgr;
	}
	public Dept getDept(){
		return this.dept;
	}
}
class Dept{
	private int deptno;
	private String dname;
	private String loc;
	private Emp[] emps;
	public Dept(){}
	public Dept(int deptno,String dname,String loc){
		this.deptno=deptno;
		this.dname=dname;
		this.loc=loc;
	}
	//setter、getter略
	public void setEmps(Emp[] emps){
		this.emps=emps;
	}
	public Emp[] getEmps(){
		return this.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 Emp mgr;//雇员领导
	private Dept dept;
	public Emp(){}
	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.comm;
	}
	public void setMgr(Emp mgr){
		this.mgr=mgr;
	}
	public void setDept(Dept dept){
		this.dept=dept;
	}
	public Emp getMgr(){
		return this.mgr;
	}
	public Dept getDept(){
		return this.dept;
	}
}
class Dept{
	private int deptno;
	private String dname;
	private String loc;
	private Emp[] emps;
	public Dept(){}
	public Dept(int deptno,String dname,String loc){
		this.deptno=deptno;
		this.dname=dname;
		this.loc=loc;
	}
	//setter、getter略
	public void setEmps(Emp[] emps){
		this.emps=emps;
	}
	public Emp[] getEmps(){
		return this.emps;
	}
	public String getInfo(){
		return "部门编号:"+this.deptno+",部门名称:"+this.dname+",位置:"+this.loc;
	}
}
public class Hello {
	public static void main(String args[]){
		//第一步:根据已有的表结构设置数据
		//准备好所有独立的类对象
		Dept dept = new Dept(10,"ACCOUNTING","New York");
		Emp empa=new Emp(7369,"SMITH","CLEAK",800.0,0.0);
		Emp empb=new Emp(7902,"FROD","MANAGER",2450.0,0.0);
		Emp empc=new Emp(7839,"SMITH","CLEAK",5000.0,0.0);
		//2、设置彼此的关系
		//设置雇员和领导的关系
		empa.setMgr(empb);
		empb.setMgr(empc);
		//设置部门关系
		empa.setDept(dept);
		empb.setDept(dept);
		empc.setDept(dept);
		dept.setEmps(new Emp[]{empa,empb,empc});//一个部门包含多个雇员
	}
}

  • 取出雇员的完整数据
public class Hello {
	public static void main(String args[]){
		//第一步:根据已有的表结构设置数据
		//准备好所有独立的类对象
		Dept dept = new Dept(10,"ACCOUNTING","New York");
		Emp empa=new Emp(7369,"SMITH","CLEAK",800.0,0.0);
		Emp empb=new Emp(7902,"FROD","MANAGER",2450.0,0.0);
		Emp empc=new Emp(7839,"SMITH","CLEAK",5000.0,0.0);
		//2、设置彼此的关系
		//设置雇员和领导的关系
		empa.setMgr(empb);
		empb.setMgr(empc);
		//设置部门关系
		empa.setDept(dept);
		empb.setDept(dept);
		empc.setDept(dept);
		dept.setEmps(new Emp[]{empa,empb,empc});//一个部门包含多个雇员
		//第二步:根据数据表结构利用引用关系取得数据
		System.out.println(empa.getInfo());//输出雇员的基本信息
		System.out.println("\t|-【领导信息】"+empa.getMgr().getInfo());
		System.out.println("\t|-【部门信息】"+empa.getDept().getInfo());
	}
}

在这里插入图片描述

  • 取出一个部门的完整信息。
public class Hello {
	public static void main(String args[]){
		//第一步:根据已有的表结构设置数据
		//准备好所有独立的类对象
		Dept dept = new Dept(10,"ACCOUNTING","New York");
		Emp empa=new Emp(7369,"SMITH","CLEAK",800.0,0.0);
		Emp empb=new Emp(7902,"FROD","MANAGER",2450.0,0.0);
		Emp empc=new Emp(7839,"SMITH","CLEAK",5000.0,0.0);
		//2、设置彼此的关系
		//设置雇员和领导的关系
		empa.setMgr(empb);
		empb.setMgr(empc);
		//设置部门关系
		empa.setDept(dept);
		empb.setDept(dept);
		empc.setDept(dept);
		dept.setEmps(new Emp[]{empa,empb,empc});//一个部门包含多个雇员
		//第二步:根据数据表结构利用引用关系取得数据
		System.out.println(empa.getInfo());//输出雇员的基本信息
		System.out.println("\t|-【领导信息】"+empa.getMgr().getInfo());
		System.out.println("\t|-【部门信息】"+empa.getDept().getInfo());
		System.out.println("========================================================");
		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());
			}
		}
	}
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值