標籤:
1、是資料持久層,對應.NET方向的有Ibatis.NET,只要用來處理資料庫表結構和程式實體之間映射,ado.net是用來處理和資料庫直接通訊的,取出資料(object,int,string,dataset,datatable等常規類型),通常程式中如果用到MOEDL實體,都需要手動寫代碼去做類型轉換(把datatable的欄位賦值到model對應欄位),用了資料持久層,這一部就可以省略了,Ibatis.NET可以直接把資料庫表欄位對應為實體模型,操作簡便了。
2、IBatis.net 是2001年發起的開源項目,它是一個輕量級的ORM架構,現在IBatisNET已經是屬於Apache下的一個子項目了。
3、DataMapper:通過配置映射關係的xml業務對象與SQL語句和預存程序進行映射.
4、DataAcces:簡單的說就是IBatis的資料訪問層.
板塊管理 填寫版跨資訊 選擇板塊 判斷資訊是否正確 修改板塊資訊 是否刪除 新增板塊 刪除板塊
5、 平常做企業級應用,需求變化是經常的事,而很多基礎代碼重複也是很讓人頭疼的問題。所以很多人會使用一些ORM架構來增強項目的可維護性、可擴充性。IBatis.Net就是一個比較易用的ORM架構,使用起來較為方便、靈活。IBatis.Net是從Ibatis的Java版本移植過來的.NET版本。iBATIS作為一種獨特的Data Mapper,使用SQL映射的方式將對象持久化至關係型資料庫。簡單的理解就是它將我們在資料訪問層實現的C#邏輯代碼,變為通過關聯式資料庫與對象的映射,將SQL邏輯放到外部的XML設定檔中,以方便以後的維護。
這個架構有兩個主要的組成部分,一個是SQL Maps,另一個是Data Access Objects。Sql Maps是這個架構的核心部分,通過使用Sql Maps你可以顯著的節約資料庫操作的代碼量。SQL Maps使用一個簡單的XML檔案來實現從實體到SQL statements的映射。使用DAO,封裝了對資料的訪問,你可以動態配置你的應用程式來訪問不同的實體儲存機制。隱藏持久性層實現的細節,Data Access Objects允許你通過一個簡單介面的來操作資料。
IBatisNet 邏輯結構
1、建立項目
2、在項目中添加dll檔案 IBatisNet.Common.dll IBatisNet.DataMapper.dll IBatisNet.DataAccess.dll3、在項目中添加設定檔 SqlMap.config
<?xml version="1.0" encoding="utf-8"?><sqlMapConfig xmlns="http://ibatis.apache.org/dataMapper" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <!-- 常量屬性,resource 通過單獨檔案properties.config載入--> <!--<properties resource="properties.config"/>--> <!--這個東西是變數用的,這裡以最簡單的實現說明,因此注釋--> <!-- 常量屬性,embedded 通過程式集資源中 載入 <properties embedded="database.config, IBatisNetDemo"/>--> <settings> <setting useStatementNamespaces="true"/> <!--是否啟用命名空間--> </settings> <providers resource="providers.config"/> <!--引入資料庫驅動檔案--> <!-- Database connection information --> <!--資料庫連接字串--> <!--<database> --><!--<provider name="sqlServer2.0"/> <dataSource name="IBatisNet" connectionString="Data Source=DESKTOP-1ORC3PV;Initial Catalog=test;Integrated Security=True"/>--><!-- <provider name="oracleClient1.0"/> <dataSource name="IBatisNet" connectionString="Data Source=LHORCL;Persist Security Info=True;User ID=linsiontest;Password=123456;Unicode=True" providerName="System.Data.OracleClient"/> </database>--> <database> <provider name="OracleClient2.0"/> <dataSource name="orcl" connectionString="Data Source=HDORCL;Persist Security Info=True;User ID=oa;Password=oa;Unicode=True"/> </database> <sqlMaps> <!--節點就是配置一些sql語句以及實體映射的xml檔案--> <sqlMap resource="Maps/Account.xml" /> <!--這個是指定對應檔的位置--> </sqlMaps> </sqlMapConfig>
節點說明① properties 節點可以根據需要配置一些常量屬性。如果這些屬性有很多的話可以單獨寫一個檔案裡面,再通過resource(或url, embedded分別是引用url和編譯在程式中的資源檔)屬性引用進來。
參數 |
描述 |
resource |
指定the properties檔案從application的根目錄進行載入 resource="properties.config" |
url |
指定the properties檔案從檔案的絕對路徑進行載入 url="c:\Web\MyApp\Resources\properties.config" 或者 url="file://c:\Web\MyApp\Resources\properties.config" |
embedded |
指定檔案可以作為程式集的資源檔進行載入‘ embedded=" database.config, IBatisNetDemo” |
②setting節點
參數 |
描述 |
cacheModelsEnabled |
是否啟用sqlMap上的緩衝機制 Example: cacheModelsEnabled=”true” Default: true (enabled) |
useStatementNamespaces |
是否使用Satement命名空間,這裡的命名空間指的是對應檔中sqlMap節點的namespace屬性 Example: useStatementNamespaces=”false” Default: false (disabled) |
validateSqlMap |
是配置要不要啟示SqlMapConfig.xsd schema驗證對應檔. Example: validateSqlMap=”false” Default: false (disabled) |
③provider節點配置資料驅動提供類設定檔的路徑和檔案名稱,通過resource(或url, embedded分別是引用url和編譯在程式中的資源檔)屬性引用進來,參數的含義同properties。ADO.NET是通過資料訪問提供者(Provider)訪問資料庫。IBatisNet使用的是外掛程式式結構來使用這些資料庫提供者,每一個Provider對應於providers.config檔案中定義的一個provider項。 通過設定這個檔案中的幾個參數來決定使用哪個資料庫提供者。提供者要求安裝相關類庫,每一個provider 元素都有"enabled" 屬性來控制是否啟用個providers. 一個provider 可以通過 “default“屬性標識為預設的提供者。
④database節點資料庫的資訊,包括使用哪些資料庫驅動和資料連線字串的配置。 ⑤typeHandler節點定義資料庫類型到dotnet資料類型的處理,不同的資料庫都有一些特殊的資料庫欄位類型需要特殊處理,就可以通過這個功能實現。比如說Blob欄位在不同的資料庫中處理不一樣。大家可以去看看Ibatisnet原始碼就清楚這個功能的實現原理,對於我們的設計會有很大的啟發⑥salMapssqlMap節點指定了對應檔的位置,配置中可以出現多個sqlMap節點,以指定項目內所包含的所有對應檔。 4、建立實體類定義實體類,該對象類將與資料庫進行映射。 5、添加對應檔相對於Nhibernate等ORM實現來說,IBatisnet的映射配置更為直接,下面是設定檔內容:
IBatisNet使用教程