1、Java类和数据表的关联
Java类的定义,通常根据数据表来定义。
类 | 数据表 |
成员属性 | 字段 |
一个实例化对象 | 一行记录 |
多个实例化对象 | 多行数据 |
2、如何用类来描述数据表的结构(外键关联)
步骤:
1)先写两个基本类(不看关联关系)
2)配置关联字段
例子:
根据部门信息获得以下内容:
一个部门的完整信息;
一个部门之中所有雇员的完整信息;
一个雇员对应的领导的信息
根据雇员信息获得以下内容:
一个雇员所在部门信息;
一个雇员对应的领导信息
package Test;
//定义部门类
class Dept{
private long deptno;
private String dname;
private String loc;
//一个部门有多个雇员信息,所以用数组
private Emp emp[];
public Dept(long deptno, String dname, String loc) {
this.deptno = deptno;
this.dname = dname;
this.loc = loc;
}
public Emp[] getEmp() {
return emp;
}
public void setEmp(Emp[] emp) {
this.emp = emp;
}
public long getDeptno() {
return deptno;
}
public void setDeptno(long 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;
}
@Override
public String toString() {
return "Dept{" +
"deptno=" + deptno +
", dname='" + dname + '\'' +
", loc='" + loc + '\'' +
'}';
}
}
//定义员工类
class Emp{
private long empno;
private String ename;
private String job;
private double sal;
private double comm;
//所属部门
private Dept dept;
//所属领导
private Emp mgr;
public Emp(long 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 Dept getDept() {
return dept;
}
public void setDept(Dept dept) {
this.dept = dept;
}
public Emp getMgr() {
return mgr;
}
public void setMgr(Emp mgr) {
this.mgr = mgr;
}
public long getEmpno() {
return empno;
}
public void setEmpno(long 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;
}
@Override
public String toString() {
return "Emp{" +
"empno=" + empno +
", ename='" + ename + '\'' +
", job='" + job + '\'' +
", sal=" + sal +
", comm=" + comm +
'}';
}
}
public class JavaDemp {
public static void main(String[] args) {
//第一步:根据关系进行类的定义
//定义出各个实例化对象
Dept dept = new Dept(10,"财务部","上海");
Emp empA = new Emp(7742L,"张三","厨师",3500,0.0);
Emp empB = new Emp(7743L,"里斯","大厨师",6000,0.0);
Emp empC = new Emp(7744L,"王五","特级厨师",15000,0.0);
//需要为对象进行关联的设置
//设置雇员与部门得关联
empA.setDept(dept);
empB.setDept(dept);
empC.setDept(dept);
//设置雇员与领导的关联
empA.setMgr(empB);
empB.setMgr(empC);
//设置部门与雇员的关系
dept.setEmp(new Emp[]{empA,empB,empC});
//第二步:根据关系获得数据
System.out.println(dept.toString()+"部门信息!!!!!");
for (int x = 0;x < dept.getEmp().length;x++){
System.out.println("\t|-" + dept.getEmp()[x].toString() + "雇员信息");
if (dept.getEmp()[x].getMgr() != null){
System.out.println("\t\t|-" + dept.getEmp()[x].getMgr().toString() + "领导信息");}
}
System.out.println("根据雇员获取信息=======================");
//根据雇员获取部门信息
System.out.println(empB.getDept().toString());
//根据雇员获取领导信息
System.out.println(empB.getMgr().toString());
}
}