简单java类是现在面向对象设计的主要分析基础,但是对于实际的开发之中简单java类的定义来源是有依据的,往往都是根据数据表的结构来实现简单java类。

在数据库之中实际上是提供有若干个数据表的,那么每一张实体数据表实际上都可以描述出一些具体的事物概念,例如:雇员信息表、部门信息表一看就知道描述的就是雇员或部门的信息。

那么按照这个思路回到程序之中你会发现,程序类的定义形式实际上和这些实体表的差别并不大,所以在实际的项目开发之中数据表与简单java类之间的基本映射关系如下:

1.数据实体表设计——类的定义;

2.表中的字段 = 类的成员属性;

3.表的外键关联 = 引用关联;

4.表的一行记录 = 类的一个实例化对象;

5.表的比行记录 = 对象数组。

java select直接映射json java映射表_项目开发


在以上所对应数据表的关系之中可以发现有如下的关联存在:

1.一个部门有多个雇员;

2.一个雇员属于一个部门;

3.一个雇员有一个领导;

下面将以上的数据表转为简单java类的定义形式,在整体的程序代码之中要求可以获得如下信息。

根据部门信息获得以下内容:

1.一个部门的完整信息;

2.一个部门之中所有雇员的完整信息;

3.一个雇员对应的领导的信息;

根据雇员信息获得以下内容:

1.一个雇员所在部门信息;

2.一个雇员对应的领导信息;

对于数据表与简单java类之间的映射最好的解决步骤:先抛开所有的关联字段不看,写出类的基本

组成,而后再通过引用配置关联字段的关系。

第一步:分别定义Emp、Dept两个实体类

class Dept {
	private long deptno ;
	private String dname ;
	private String loc ;
	public Dept(long 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 ;
	}
}
class Emp {
	private long empno ;
	private String ename ;
	private String job ;
	private double sal ;
	private double comm ;
	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 ;
	}
	// setter、getter无参构造略
	public String getInfo() {
		return "[雇员信息]雇员编号 = " + this.empno + "、雇员姓名 = " + this.ename + "、雇员职位 = " + this.job + "、基本工资 = " + this.sal + "、佣金 = " + this.comm ;
	}
}
public class JavaDemo {
	public static void main(String[] args) {

	}
}

第二步:配置所有的关联字段

class Dept {
	private long deptno ;
	private Emp emps [] ; // 多个雇员信息
	private String dname ;
	private String loc ;
	public Dept(long deptno,String dname,String loc) {
		this.deptno = deptno ;
		this.dname = dname ;
		this.loc = loc ;
	}
	public void setEmps (Emp [] emps) {
		this.emps = emps ;
	}
	public Emp [] getEmps () {
		return this.emps ;
	}
	// setter、getter无参构造略
	public String getInfo() {
		return "[部门信息]部门编号 = " + this.deptno + "、部门名称 = " + this.dname + "、部门位置 = " + this.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 ;
	}
	// setter、getter无参构造略
	public String getInfo() {
		return "[雇员信息]雇员编号 = " + this.empno + "、雇员姓名 = " + this.ename + "、雇员职位 = " + this.job + "、基本工资 = " + this.sal + "、佣金 = " + this.comm ;
	}
	public void setDept(Dept dept) {
		this.dept = dept ;
	}
	public void setMgr(Emp mgr) {
		this.mgr = mgr ;
	}
	public Dept getDept() {
		return this.dept ;
	}
	public Emp getMgr() {
		return this.mgr ;
	}

}
public class JavaDemo {
	public static void main(String[] args) {

	}
}

在以后进行实际项目开发的过程之中一定是分两个步骤实现的:
第一步:根据表的结构关系进行对象的配置;
第二步:根据要求通过结构获取数据。

范例:实现项目开发要求

public class JavaDemo {
	public static void main(String[] args) {
		// 第一步:根据关系进行类的定义
		// 定义出各个的实例化对象,此时并没有任何的关联定义
		Dept dept = new Dept(10,"财务部","上海") ;
		Emp empA = new Emp(7369L,"SMITH","CLERK",800.00,0.0) ;
		Emp empB = new Emp(7566L,"FORD","MANAGER",2450.00,0.0) ;
		Emp empC = new Emp(7839L,"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 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()) ;
			}
		}
		System.out.println("-------------------------------------------") ;
		System.out.println(empB.getDept().getInfo()) ; // 根据雇员获取部门信息
		System.out.println(empB.getMgr().getInfo()) ; // 根据雇员获取领导信息
	}
}

在以后的开发之中这种转换的定义形式一定是要求熟练完成的。