首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 實現 .NET DataTable 功能系列(一):架構設計與 JUnit 整合測試

     編輯:Java 相關知識

系列首篇,展示自製 DataTable 元件的整體架構、JUnit 測試代碼、多表連接(Join)功能演示與實際運行結果。

專案背景

從 .NET 轉 Java 開發,缺少 System.Data.DataTable 這類強大的記憶體資料結構。決定自行實現輕量級對應元件,支援:

  • SQL 查詢直接映射為 DataTable
  • 多表 Join(類似 LINQ/DataRelation)
  • JUnit 單元測試驗證

測試代碼:JUnit 整合測試


@Test
public void joinTable() {
    JingZongDB jzdb = new JingZongDB();
    
    // 查詢兩張表
    DataTable dt1 = jzdb.getDataTable("SELECT * FROM newsType");
    DataTable dt2 = jzdb.getDataTable("SELECT * FROM news");
    
    // 多表連接:dt1.id = dt2.typeid
    DataTable dt = DataTable.joinTable(dt1, dt2, "id", "typeid");
    
    // 輸出驗證
    System.out.println("新聞類型表:" + dt1.getRows().size());
    DataTable.outTable(dt1);
    
    System.out.println("新聞表:" + dt2.getRows().size());
    DataTable.outTable(dt2);
    
    System.out.println("合併後:" + dt.getRows().size());
    DataTable.outTable(dt);
}

測試數據與運行結果

新聞類型表 (4 筆)

id:1 typeName:學生工作
id:2 typeName:通知公告
id:3 typeName:招生簡章
id:4 typeName:教務信息

新聞表 (16 筆)

id:1 typeid:1 newsName:學生工作1
id:2 typeid:1 newsName:學生工作2
...
id:16 typeid:4 newsName:教務信息4

Join 合併結果 (16 筆,一對多)

合併後:16
id:1 typeName:學生工作 id:1 typeid:1 newsName:學生工作1
id:1 typeName:學生工作 id:2 typeid:1 newsName:學生工作2
...
id:4 typeName:教務信息 id:16 typeid:4 newsName:教務信息4

架構核心類別圖

JingZongDB (資料存取門面)
    └── getDataTable(sql, params) → DataTable
    
DataTable (核心資料容器)
    ├── List rows
    ├── static joinTable(t1, t2, key1, key2) → DataTable
    ├── static outTable(DataTable) → void (控制台輸出)
    
DataRow
    └── List columns
    
DataColumn
    ├── String name
    └── Object value
    
SqlParameter (參數封裝,系列二詳述)
    ├── String type
    ├── String/int/boolean/Date/Blob value

關鍵技術點

  • 雙資料庫支援:JingZongDB 封裝不同資料源切換邏輯。
  • 記憶體 Join 算法:joinTable 以 HashMap 建立左表索引,掃描右表匹配,時間複雜度 O(N+M)。
  • JUnit 4 整合:@Test 註解驅動,System.out.println 驗證輸出(生產環境建議用 Assert 斷言)。

系列導航

  1. 系列一(本文):架構設計、JUnit 測試、Join 功能演示。
  2. 系列二:SqlParameter 封裝與 getDataTable 核心查詢邏輯。
  3. 系列三:參數綁定 addSqlParameter 實現與業務調用範例。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved