iBatis for net 框架使用



介: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[文件名不能修改]此文件爲數據庫開發商提供的驅動配置集合,是固定不變的,無需修改與配置,複製文件到網站的根目錄,代碼如下:

ContractedBlock.gifproviders.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,代碼如下:


ContractedBlock.gifIBatisHepler.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();


我對此框架的評價:配置文件有點多,用戶需要去寫東西比較多,調用查詢不是很好用,尤其是條件查詢很不方便。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章