数据表与简单java映射转换
实际开发中,数据表与简单JAVA类的映射关系如下:
- 数据实体表设计 = 类的定义
- 表中的字段 = 类的成员属性
- 表的外键关联 = 引用关联
- 表的一行记录 = 类的一个实例化对象
- 表的多行记录 = 对象数组
现有两个数据表
从数据表的关系之中可以发现有如下的关系存在:
- 一个部门有多个雇员
- 一个雇员属于一个部门
- 一个雇员有一个领导
将数据表转换为简单JAVA类的定义形式:
根据部门信息获得以下内容:
- 一个部门的完整信息
- 一个部门之中所有雇员的完整信息
- 一个雇员对应的领导的信息
根据雇员信息获得以下内容:
- 一个雇员所在部门信息
- 一个雇员对应的领导信息
解决步骤
先抛开所有的关联字段不看,写出类的基本组成,而后再通过引用配置关联字段的关系
一、定义基本的类(emp和dept)
二、配置所有关联字段
三、在主方法中,根据关系进行类的定义
四、根据关系获取信息
源代码如下
class Emp{
private long id;
private String name;
private String job;
private double sal;
private double comm;
/**
*所属部门
*/
private Dept dept;
/**
*所属领导
*/
private Emp mgr;
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 Emp(long id, String name, String job, double sal, double comm) {
this.id = id;
this.name = name;
this.job = job;
this.sal = sal;
this.comm = comm;
}
public Emp(){
}
public String getInfo(){
return "【雇员信息】雇员编号:"+this.id+" 雇员姓名:"+this.name+" 雇员职位:"+this.job+" 雇员工资:"+this.sal+" 雇员佣金:"+this.comm;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
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;
}
}
class Dept{
private long id;
private String name;
private String location;
public Emp[] getEmps() {
return emps;
}
public void setEmps(Emp[] emps) {
this.emps = emps;
}
//多个雇员信息
private Emp emps[];
public Dept(){
}
public Dept(long id, String name, String location) {
this.id = id;
this.name = name;
this.location = location;
}
public String getInfo(){
return "【部门信息】部门编号:"+this.id+" 部门名称:"+this.name+" 部门位置:"+this.location;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
}
public class Main {
public static void main(String[] args) {
//三、根据关系进行类的定义,定义出各个的实例化对象,此时并没有任何的关联定义
Dept dept = new Dept(10,"财务部","上海");
Emp empA = new Emp(7369L,"SMITH","CLARK",800.00,0.0);
Emp empB = new Emp(7370L,"FORD","MANAGER",2450.00,0.0);
Emp empC = new Emp(7371L,"KING","PRESIDENT",5000.00,0.0);
//为对象进行关联的设置
//设置雇员与部门的关联
empA.setDept(dept);
empB.setDept(dept);
empC.setDept(dept);
//设置雇员与领导的关联
empA.setMgr(empB);
empB.setMgr(empC);
//设置部门与雇员的关联
dept.setEmps(new Emp[]{empA,empB,empC});
//四:根据关系获取信息
//获取部门信息
System.out.println(dept.getInfo());
for (int i = 0; i < dept.getEmps().length; i++) {
System.out.println("\t|-"+dept.getEmps()[i].getInfo());
//获取雇员领导信息
if(dept.getEmps()[i].getMgr()!=null) {
System.out.println("\t\t|-"+dept.getEmps()[i].getMgr().getInfo());
}
}
System.out.println("---------------------------");
//根据雇员获取部门信息
System.out.println(empB.getDept().getInfo());
//根据与雇员获取领导信息
System.out.println(empB.getMgr().getInfo());
}
}
运行结果:
代码编译器:IntelliJ IDEA 2020.02
作者:喻航
本文标题:数据表与简单java映射转换
本文链接:https://onedawn.cn/javaOOP/60.html
版权声明:如无特别声明,本文即为原创文章,仅代表个人观点,版权归 雾满拦江 所有,未经允许不得转载!