簡介:ibatis 一詞來源於“internet”和“abatis”的組合,是一個由Clinton Begin在2001年發起的開放源代碼項目,到後面發展的版本叫MyBatis但都是指的同一個東西。最初側重於密碼軟件的開發,現在是一個基於Java的持久層框架,漸漸的也把這種模式轉移到了net。相對NHibernate等“一站式”ORM解決方案而言,ibatis 是一種“半自動化”的ORM實現。
下載地址:http://code.google.com/p/mybatisnet/downloads/list?can=3
本文開發Demo環境:IBatis.DataMapper.1.6.2.bin + MsSql 2005 + Vs 2010
使用步驟:
在使用之前,爲大家推薦一款代碼生成器,也是我專爲此框架寫的一款代碼生成器,生成iBatis的Map配置文件,這樣一來,用戶不用開任何關於框架的說明文檔,即可使用此框架。代碼生成器(CodeHelper)下載地址與說明:
http://www.cnblogs.com/stone_w/archive/2011/09/26/2192010.html
第一步:創建數據庫與新建網站項目。
創建數據庫與表的T-sql:
/*
* iBatisDemo Sql
* Stone (QQ:1370569)
* Date:2011.09.26
*/
create database OrmDB
go
use OrmDB
go
create table People
(
id int primary key identity,
[name] varchar(250),
age int
)
go
打開vs開發工具,新建網站項目。
第二步:爲網站添加iBatis框架支持。
爲網站添加引用或者直接把下載的iBatis框架中的IBatisNet.Common.dll和IBatisNet.DataMapper.dll複製到Bin目錄下。
第三步:添加iBatis配置文件。
iBatis的配置文件只用三種,也必須要有這三種:
1.providers.config[文件名不能修改]此文件爲數據庫開發商提供的驅動配置集合,是固定不變的,無需修改與配置,複製文件到網站的根目錄,代碼如下:
providers.config
2.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">
<settings>
<!--/是否使用Satement命名空間,這裏的命名空間指的是映射文件中sqlMap節點的namespace屬性,默認是false-->
<setting useStatementNamespaces="false"/>
<!--是否啓用DataMapper的緩存機制,針對全部的SqlMap,默認是true-->
<setting cacheModelsEnabled="true"/>
<!--是否啓用SqlMapConfig.xsd schema驗證映射文件,默認是false-->
<setting validateSqlMap="false"/>
</settings>
<!--配置數據驅動提供類配置文件的路徑和文件名-->
<providers resource="providers.config"/>
<!--如果在providers.config文件中指定了默認的數據庫驅動,那麼provider節點就不需要設置了,它的作用是在換數據庫驅動時不需要修改providers.config文件。datasource節點用於指定ADO.NET Connection String.-->
<database>
<provider name="sqlServer2.0"/>
<dataSource name="mydb" connectionString="data source=127.0.0.1;database=MyBatisDB;user id=sa;password=sa;"/>
</database>
<!--指定映射的文件的位置-->
<sqlMaps>
<sqlMap resource="Maps/PeopleMap.xml"/>
</sqlMaps>
</sqlMapConfig>
3.每個實體類(表)都有一個單獨的配置文件類,類型爲xml。代碼生成器也是生成這個類的,這樣一來,用戶就可以幾秒鐘創建開發一個iBatis項目了,實體類的配置文件格式如下,在網站的根目錄創建一個Map的文件夾,新建xxxMap.xml格式的配置類,比如:PeopleMap.xml文件,示例代碼如下:
<?xml version="1.0" encoding="utf-8" ?>
<!--namespace必須用否者就報錯(讀取配置文件報:未將對象引用設置到對象的實例)-->
<sqlMap namespace="" xmlns="http://ibatis.apache.org/mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<statements>
<select id="GetPeopleById" parameterClass="string" resultClass="HashTable">
SELECT * FROM People WHERE Id=#Id#
</select>
<insert id="Add" parameterClass="hashtable">
INSERT dbo.People (name ,age)
VALUES (#Name# , #Age#)
</insert>
<delete id="Delete" parameterClass="int" restultClass="int">
DELETE FROM dbo.People WHERE Id=#Id#
</delete>
<update id="Update" parameterClass="hashtable" restltClass="int">
UPDATE People SET name=#Name# WHERE Id=#Id#
</update>
<select id="GetAll" resultClass="HashTable">
SELECT * FROM People
</select>
</statements>
</sqlMap>
這三類配置文件必須都要有,與其他orm框架不同的是,web.config什麼也不用配置,及時練數據庫連接字符串也不是在它的文件中配置的,也就是web.config是沒有被用到的。
第四步:iBatis框架語法與使用。
使用之前先來加入一個DB輔助類IBatisHepler.cs,代碼如下:
IBatisHepler.cs
使用語法如下:
// 添加引用
using System.Collections;
using IBatisNet.DataMapper;
using IBatisNet.DataMapper.Configuration;
// 1.添加
Hashtable ht_add = new Hashtable();
ht_add["Name"] = "IBatis"; // [注意]大小寫要和xxxMap.xml裏保持一致
ht_add["Age"] = 2001;
IBatisHepler.ExcuteInsert("Add", ht_add);
// 2.修改
Hashtable ht_up = new Hashtable();
ht_up["Id"] = "1";
ht_up["Name"] = "IBatis";
ht_up["Age"] = 2001;
IBatisHepler.ExcuteUpdate("Update", ht_up);
// 3.刪除
IBatisHepler.ExcuteDelete("Delete", 14);
// 4.查詢
Repeater1.DataSource = IBatisHepler.ExcuteSelectObj("GetPeopleById", "1");
Repeater1.DataBind();
我對此框架的評價:配置文件有點多,用戶需要去寫東西比較多,調用查詢不是很好用,尤其是條件查詢很不方便。