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

iBatis.NET 1.6.1 三層架構 Demo 完整解析:架構設計、SQL Map 組態與適用場景評估

     編輯:關於.NET

本文剖析一個 iBatis.NET 三層架構 Demo,涵蓋專案結構、核心組態檔、SQL Map 撰寫、業務層封裝,並深入探討 iBatis.NET 的適用場景與不適用場景。

方案架構:四專案 + 兩資料夾

  • Web:前台 ASP.NET 應用
  • BLL:業務邏輯層
  • Model:實體類別
  • SqlMaps:資源專案,封裝所有組態檔與 SQL Map 檔案
  • Include:iBatis.NET 相關 DLL
  • Log:log4net 輸出目錄 (<param name="File" value="../Log/log.txt"/>)

SqlMaps 專案核心檔案詳細說明

檔案用途
sqlmap.config核心組態:properties、provider、database、sqlMaps 設定
database.config資料庫連線字串,被 sqlmap.config 的 <properties embedded="database.config,Service.SqlMaps"/> 參考
providers.configiBatis 內建 provider 設定,通常無需修改
MapSqlClientPerson.xmlSQL Map 檔:支援存儲程序、內嵌 SQL、動態 SQL、ORM 映射
CodeMyBatis.cs初始化 ISqlMapper 的工具類,擴充支援 DataTable/DataSet 輸出
Script建表與測試資料 SQL 腳本

動態 SQL 範例 (Person.xml)

<select id="SelectAllPerson2" resultMap="SelectAllResult">
  select PER_ID AS Id, PER_FIRST_NAME AS FirstName, ...
  from PERSON
  <dynamic prepend="WHERE">
    <isParameterPresent>
      PER_FIRST_NAME LIKE #FirstName#+'%'
    </isParameterPresent>
  </dynamic>
</select>

關鍵提示:輸出為 DataTable/DataSet 時,resultMap 不生效,SQL 必須用 AS 別名對應實體屬性名稱。建議實體屬性與資料庫欄位命名一致,減少映射設定。

BLL 層封裝設計

// 基底類別,提供 SqlMapper 存取
public class IBll
{
    protected static ISqlMapper SqlMap = MyBatis.SqlMap;
}

// 業務服務類別
public class PersonService : IBll
{
    public IList<Person> GetAllPerson()
        => SqlMap.QueryForList<Person>("SelectAllPerson", null);

    public DataTable GetAllPerson2()
    {
        int recCount = 0;
        return MyBatis.QueryForDataTable("SelectAllPerson2", 
            new Person { FirstName = "kilo" }, 10, 1, out recCount);
    }
}

iBatis.NET 適用場景深度評估 (摘錄自同事 Ryan)

✅ 適用場景

  • 受限環境:僅提供特定 Select/存儲程序、不公開表結構 (安全性考量)
  • 規範要求存儲程序:銀行等產業要求業務邏輯必須在 DB 層以存儲程序實作
  • 高效能需求:需高度優化 SQL 達到效能指標
  • 中小型系統:iBatis 輕量、簡單、不強加設計、適合成長性系統
  • 大型企業系統:高效處理大量資料、多樣映射方式、MySpace 等大型站點採用
  • 跨資料庫平台:支援各類關聯式資料庫、可移植性強 (Java/.NET 同架構)
  • 團隊分工明確:SQL 由 DBA 維護、程式碼由開發維護、介面清晰
  • 開源免費

❌ 不適用場景

  • 擁有資料庫完全控制權、無外部限制
  • 需要完全動態 SQL (如使用者自訂查詢條件極複雜)
  • 非關聯式資料庫
  • iBatis 無法勝任的特殊需求

運行環境:VS2008 + SQL Server 2000/2005。原始碼經升級精簡,感謝原作者貢獻。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved