本博文源于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用程序自动生成,减少不必要的代码码量,希望大家都能认真体会!
代码的使用
将类的定义和测试代码一并拷到或者代码码进本地,修改包名和类名。然后开始使用并作自我裁剪和自身调试。