1个案例道破数据表与Java类的映射(含测试代码)

本博文源于Java基础。简单Java类在实际的开发中都是根据其数据表的定义来实现的,在项目开发中有着无可替代的重要作用。本博文以案例的方式述说如何将数据库中的数据表用Java语言叙述出来,然后输出相应的结果。

实例场景

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

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

其中部门表的部门编号是主键;雇员表的雇员编号是主键,部门编号是外键。
本博文的目标是将这层数据表的关系用java语言描述出来。

测试结果

一个部门有多个员工,一个雇员属于一个部门。一个部门有多个雇员,一个雇员有一个领导。结果如下
在这里插入图片描述
第一个箭头是指雇员表的基本信息java模拟
第二个箭头是指部门表的基本信息java模拟
第三个箭头是指部门表的雇员开始遍历
第四个箭头是指部门表的第一个员工,如果有领导上级在它上方,那就在下一行输出它的领导,否则不输出。后面以此类推

实验步骤

这两部分代码只有非setter与getter要写,其他都是自动生成的,大家应该都能明白的。关键是非setter与getter如何书写是真的关键,下面对其进行详细阐述!

部门表的定义

想到部门表,先把基本信息表述出来,然后在类中声明一个雇员类对象数组,这样将数据表的一对多的关系表述出来。这个思想要想得到哟!

class Dept {
	private int deptno;//部门编号
	private String dname;//部门名称
	private String loc;//部门位置
	private Emp emps[];//多个雇员
	public int getDeptno() {
		return deptno;
	}
	public void setDeptno(int deptno) {
		this.deptno = deptno;
	}
	public String getDname() {
		return dname;
	}
	public void setDname(String dname) {
		this.dname = dname;
	}
	public String getLoc() {
		return loc;
	}
	public void setLoc(String loc) {
		this.loc = loc;
	}
	public void setEmps(Emp[] emps) {
		this.emps = emps;
	}

	public Dept(int deptno, String dname,String loc) {
		this.deptno = deptno;
		this.dname = dname;
		this.loc = loc;
	}
	public String getInfo() {
		return "部门编号:" + this.deptno + ",名称:" + this.dname + ",位置:" + this.loc;
	}

	public Emp[] getEmps() {
		// TODO Auto-generated method stub
		return this.emps;
	}
}

雇员表的定义

雇员表的定义那肯定是一对一的关系,也就是一个雇员对应一个领导,一个雇员对应一个部门。部门的类要声明哟!


class Emp {
	public int getEmpno() {
		return empno;
	}
	public void setEmpno(int empno) {
		this.empno = empno;
	}
	public String getEname() {
		return ename;
	}
	public void setEname(String ename) {
		this.ename = ename;
	}
	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;
	}
	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 String getInfo() {
		return "雇员编号:" + this.empno + ",姓名:" + this.ename + ",职位:" + this.job
				+ "、工资:" + this.sal + "、佣金:" + this.comm;
	}
	public void setMgr(Emp eb) {
		this.mgr = eb;
		
	}
	public void setDept(Dept dept2) {
		this.dept = dept2;
		
	}
	public Emp getMgr() {
		// TODO Auto-generated method stub
		return this.mgr;
	}
	public Dept getDept() {
		// TODO Auto-generated method stub
		return this.dept;
	}
	
}

测试代码–main函数使用

每一个步骤博主都做好了步骤,首先定义数据表,然后定义若干雇员,然后反应雇员与领导的关系,是一对一的关系。然后设置雇员和部门的关系。雇员对于部门一对一。部门对雇员是一对多。然后进行print进行遍历雇员和数据表

public class Test14 {
	public static void main(String args[]) {
		//第一步:根据表结构描述设置数据
		//1、产生各自的独立对象
		Dept  dept = new Dept(10,"ACCOUNTING","New York");
		Emp ea = new Emp(7369,"Smith","Clerk",8000.0,0.0);
		Emp eb = new Emp(7370,"FOrd","MANAGER",80000.0,0.0);
		Emp ec = new Emp(7396,"King","PRESIDENT",800000.0,0.0);
		//第二步设置雇员和领导的关系
		ea.setMgr(eb);
		eb.setMgr(ec);
		//第三步设置雇员和部门的关系
		ea.setDept(dept);
		eb.setDept(dept);
		eb.setDept(dept);
		dept.setEmps(new Emp[] {ea,eb,ec});
		//第四步根据表结构描述取得设置得数据
		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());
			}
		}
	}
}

总结

本博文研究数据表与java类的映射。将数据表的一对多关系用java语言进行真实描述。在实现的过程中要对定义非常熟悉,比如部门与雇员的关系是一对多,那么java语言怎么说呢?你可以声明一个雇员数组进行设置。如何设置雇员和部门的关系呢,那是一对一只需要声明一个部门表即可。然后setter与getter用程序自动生成,减少不必要的代码码量,希望大家都能认真体会!

代码的使用

将类的定义和测试代码一并拷到或者代码码进本地,修改包名和类名。然后开始使用并作自我裁剪和自身调试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值