在IBatis中我們可以靈活的選擇DAO類型,也就是可以在底層選用不同的資料庫操作方式。有正常方式、配置檔案的方式、Hibernet的方式等:
1、正常方式
和我們之前的ADO.NET開發較為類似,都是将sql語句寫在cs代碼中進行調用:
首先通過配置檔案初始化:

DomDaoManagerBuilder builder = new DomDaoManagerBuilder();

builder.Configure("dao" + "_" + ConfigurationManager.AppSettings["database"] + "_"

+ ConfigurationManager.AppSettings["providerType"] + ".config");

daoManager = DaoManager.GetInstance("SimpleDao");

相對應的配置檔案如下:

<context id="SimpleDao" default="true">

<properties resource="../../database.config"/>


<!-- ==== SqlClient configuration (default provider) ========= -->

<database>

<!-- Optional ( default ) -->

<provider name="sqlServer1.1"/>

<dataSource name="iBatisNet" connectionString="data source=${datasource};database=${database};user id=${userid};password=${password};connection reset=false;connection lifetime=5; min pool size=1; max pool size=50"/>

</database>


<daoFactory>

<dao interface="IBatisNet.DataAccess.Test.Dao.Interfaces.IAccountDao, IBatisNet.DataAccess.Test" implementation="IBatisNet.DataAccess.Test.Dao.Implementations.Ado.AccountDao, IBatisNet.DataAccess.Test"/>

</daoFactory>

</context>
然後在對應的,比如AccountDao中寫具體的查詢sql等
2、配置方式
将sql語句放在配置檔案中,書寫和修改較靈活,這也是比較常用的方式




daoManager = DaoManager.GetInstance("SqlMapDao");

<context id="SqlMapDao">


<!-- ==== SqlClient configuration ========= -->



</database>


<daoSessionHandler id="SqlMap">

<!-- -->

<property name="resource" value="SqlMap_MSSQL_SqlClient.config"/>


<!-- <property name="url" value="E:\Projet\iBatis\trunk\cs\mapper\IBatisNet.DataAccess.Test\bin\Debug\SqlMap_MSSQL_SqlClient.config"/>

-->

<!--

<property name="embedded" value="bin.Debug.SqlMap_MSSQL_SqlClient.config, IBatisNet.DataAccess.Test"/>


</daoSessionHandler>



<dao interface="IBatisNet.DataAccess.Test.Dao.Interfaces.IAccountDao, IBatisNet.DataAccess.Test" implementation="IBatisNet.DataAccess.Test.Dao.Implementations.DataMapper.AccountDao, IBatisNet.DataAccess.Test"/>


然後可以将每一張表的sql語句單獨放在一個配置檔案中,比如:

<select id="GetAccountsDynamic" resultMap="account-result" parameterClass="Hashtable" >

select top $MaximumAllowed$ * from Accounts

<dynamic prepend="where">

<isParameterPresent>

<isNotEmpty prepend="and" property="FirstName" >

Account_FirstName LIKE '%$FirstName$%'

</isNotEmpty>

<isNotEmpty prepend="and" property="LastName" >

Account_LastName LIKE '%$LastName$%'


<isNotEmpty prepend="and" property="EmailAddress" >

Account_Email LIKE '%$EmailAddress$%'


</isParameterPresent>

</dynamic>

order by Account_LastName

</select>
3、使用Hibernet方式
也就是使用Hibernet的資料庫操作。
本文轉自永春部落格園部落格,原文連結:http://www.cnblogs.com/firstyi/archive/2007/08/17/859772.html,如需轉載請自行聯系原作者