Java 第9 章 : 資料表與簡單Java類對映轉換
課時38:綜合實戰:資料表與簡單Java類對映轉換
簡單Java類是現在物件導向設計的主要分析基礎,但是對於實際的開發之中簡單Java類的定義來源是有依據的,往往都是根據資料標的結構來實現簡單Java類。
在資料庫之中實際上是提供有若干個資料表的,那麼每一張實體資料表都可以描述出一些具體的事物,例如:僱員資訊表、部門資訊表一看就知道描述的是僱員或部門的資訊。
那麼按照這個思路回到程式之中你會發現,程式類的定義形式實際上和這些表的差別並不大,所以在實際的開發之中資料表與簡單Java類之間的基本對映關係如下:
- 資料實體表設計 = 類的定義;
- 表中的欄位 = 類的成員屬性;
- 標的外來鍵關聯 = 引用關聯;
- 標的一行記錄 = 類的例項化物件;
- 標的多行記錄 = 物件陣列。
在以上所對應資料表的關係之中可以發現有如下的關聯存在:
- 一個部門有多個僱員;
- 一個僱員屬於一個部門;
- 一個僱員有一個領導;
下面將以上的資料錶轉為簡單Java類的定義形式,在整體的程式程式碼之中要求可以獲得如下資訊:
- 根據部門資訊獲得以下內容:
|-一個部門的完整資訊;
|-一個部門之中所有僱員的完整資訊;
|-一個僱員對應的領導資訊;
- 根據僱員資訊獲得以下內容:
|-一個僱員所在的部門資訊;
|-一個僱員對應的領導資訊。
對於資料表與簡單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;
}
}
第二部:配置所有的關聯欄位
class Dept {
private long deptno;
private String dname;
private String loc;
private Emp emps[]; //多個僱員資訊
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;
}
}
在以後進行實際專案開發過程中一定是分兩個步驟實現的:
- 第一步:根據標的結構關係進行物件的配置;
- 第二部:根據要求通過結構獲取資料。
範例:實現專案開發要求
class Dept {
private long deptno;
private String dname;
private String loc;
private Emp emps[]; //多個僱員資訊
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 Demo {
public static void main(String[] args) {
//第一步根據關係進行類的定義
//定義出各個的例項化物件,此事並沒有任何的關聯定義
Dept dept = new Dept(10, "財務部", "上海");
Emp empA = new Emp(7369L, "史密斯", "職員", 800.00, 0.0);
Emp empB = new Emp(7566L, "福克斯", "領導", 2450.00, 0.0);
Emp empC = new Emp(7839L, "緹娜", "老總", 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()); //根據僱員獲取領導資訊
}
}
在以後的開發之中這種轉換的定義形式一定是要求熟練完成的。
課時39:綜合實戰:一對多對映
綜合案例:資料表與簡單Java類(一對多)
按照表的要求將表的結構轉換為類結構,同時可以獲取如下資訊:
- 獲取一個分類的完整資訊;
- 可以根據分類獲取其對應的所有子分類的資訊。
相關文章
- 【Java】基本資料、包裝類間轉換與處理Java
- [Java] 基本資料、包裝類間轉換與處理Java
- 【Java】資料型別轉換Java資料型別
- java基本資料型別與自動轉換Java資料型別
- 《Mybatis 手擼專欄》第2章:建立簡單的對映器代理工廠MyBatis
- 2、java資料型別轉換Java資料型別
- scala和java資料型別轉換Java資料型別
- Java資料型別自動轉換(++ ,+=)Java資料型別
- java工具類之編碼轉換工具類Java
- 第6章 Java APIJavaAPI
- JAVA簡單的複習資料Java
- java9第5篇-Collection集合類的增強與優化Java優化
- Java File類的簡單使用Java
- java 物件與xml相互轉換Java物件XML
- 資料類新轉換
- [Java基礎]之 資料型別轉換Java資料型別
- Java資料型別及型別轉換Java資料型別
- Java常用時間格式轉換工具類Java
- Java資料型別的顯式轉換和隱式轉換Java資料型別
- Java 對映 自定義排序Java排序
- JavaScript 資料處理 - 對映表篇JavaScript
- Java學習第1章Java
- linux下簡單好用的埠對映轉發工具rinetdLinux
- 第8,9,10,11,12章-類整理
- 本地方法怎麼對映Java層的資料型別Java資料型別
- java 字串與檔案相互轉換Java字串
- Java 集合與陣列互相轉換Java陣列
- python字元對映表和字元替換Python字元
- 《Java程式設計邏輯》第3章 類的基礎Java程式設計
- 萬能java字串編碼轉換工具類Java字串編碼
- Kotlin和Java的簡單對比KotlinJava
- Hibernate中實體類對映檔案表與表的關係模版
- java物件關係對映ROMJava物件
- MyBatis Java 和 資料庫 資料型別對應表MyBatisJava資料庫資料型別
- Hibernate--單表對映總結
- 第1章 Oracle資料庫簡介-RMOracle資料庫
- 第1章 Oracle資料庫簡介-DBMSOracle資料庫
- java介面和抽象類的簡單理解Java抽象