我的iBatisNet入門
這幾天有些時間,看到網上好多朋友學習IbatisNet,我也就來學學,和NHibernate一樣這種架構也是從java轉化過來的,自然設定檔是少不了的,但是設定檔出錯也是讓人最為鬱悶的事了!我也遇到了這樣的問題下面以我學IbatisNet 的第一個例子來講講
l 準備工作:
架構可以從http://ibatis.apache.org/dotnetdownloads.cgi上下載。我用的版本是DataMapper 1.5.1 ,DataAccess 1.8.1建議下載原始碼Source Revision 356824
運行環境: Visual Studio 2005 Team Suite, Sql Server 2000
l 開始編碼
1. 建立資料表
CREATE TABLE [Persons] (
[PersonID] [int] IDENTITY (100, 1) NOT NULL ,
[PersonName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[PersonAddress] [varchar] (250) COLLATE Chinese_PRC_CI_AS NULL ,
[CreateDate] [datetime] NULL ,
CONSTRAINT [PK_Persions] PRIMARY KEY CLUSTERED
(
[PersonID]
) ON [PRIMARY]
) ON [PRIMARY]
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>
<setting cacheModelsEnabled="true"/>
<setting useStatementNamespaces="false" />
</settings>
<providers resource="providers.config" />
<database>
<provider name="sqlServer2.0"></provider>
<dataSource name="IBatisNet" connectionString="server=10.1.19.160;database=xx;user id=sa;password=xx;connection reset=false;"/>
</database>
<sqlMaps>
<sqlMap resource="Person.xml" />
</sqlMaps>
</sqlMapConfig>
注意: xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
是必須添加的,我就是因為這個問題出現提示SqlMap.config檔案配置有錯誤.
3. Person.xml
<?xml version="1.0" encoding="utf-8" ?>
<sqlMap namespace="IBatisNet.QuickStart" xmlns="http://ibatis.apache.org/mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<alias>
<typeAlias alias="Person" type="IBatisNet.QuickStart.Person,IBatisNet.QuickStart" />
</alias>
<statements>
<select id="SelectAll" resultMap="SelectAllResult">
select
PersonID,
PersonName,
PersonAddress,
CreateDate
from Persons
</select>
<insert id="InsertPerson" parameterClass="Person">
INSERT INTO Persons(
[PersonName],[PersonAddress],[CreateDate]
)VALUES(
#PersonName#,#PersonAddress#,#CreateDate#
)
</insert>
</statements>
<resultMaps >
<resultMap id="SelectAllResult" class="Person">
<result property="PersonID" column="PersonID" />
<result property="PersonName" column="PersonName" />
<result property="PersonAddress" column="PersonAddress" />
<result property="CreateDate" column="CreateDate" />
</resultMap>
</resultMaps>
</sqlMap>
4. 實體類如下
namespace IBatisNet.QuickStart
{
/// <summary>
/// Person Entity
/// </summary>
[Serializable]
public class Person
{
public Person()
{
}
private int _personid;
private string _personname;
private string _personaddress;
private DateTime _createdate;
/// <summary>
/// Person ID
/// </summary>
public int PersonID
{
set { _personid = value; }
get { return _personid; }
}
/// <summary>
/// Person Name
/// </summary>
public string PersonName
{
set { _personname = value; }
get { return _personname; }
}
/// <summary>
/// Person Address
/// </summary>
public string PersonAddress
{
set { _personaddress = value; }
get { return _personaddress; }
}
/// <summary>
/// Create Date
/// </summary>
public DateTime CreateDate
{
set { _createdate = value; }
get { return _createdate; }
}
}
}
5. providers.config
這個檔案可以在下載的檔案中 IBatisNet.DataMapper-bin-1.5.1\binaries-2.0下找到copy你的項目中就可以了!
注意:在設定你所載入的驅動的屬性enabled="true"
以上的設定檔放的位置你的系統必須能夠載入到!
有關更多的配置資訊可以參看IBatisNet的協助或是http://pw.cnblogs.com/category/58599.html
6.擷取ISqlMapper對象
代碼如下:
DomSqlMapBuilder builder = new DomSqlMapBuilder();
//方法一
ISqlMapper Map = builder.Configure("SqlMap.config");
//方法二
ISqlMapper Map = builder.ConfigureAndWatch("SqlMap.config");
7.基本操作
由於我的上面的Person.xml中我只定義了添加和擷取全部的方法,別的方法可參照IBatisNet協助自已添加
using IBatisNet.QuickStart;//person實體類
using IBatisNet.DataMapper;
using IBatisNet.DataMapper.Configuration;
DomSqlMapBuilder builder = new DomSqlMapBuilder();
ISqlMapper Map = builder.Configure("SqlMap.config");
//ISqlMapper Map = builder.ConfigureAndWatch("SqlMap.config");
Person p = new Person();
p.PersonName = "Test";
p.PersonAddress = "china";
p.CreateDate = System.DateTime.Now;
Map.Insert("InsertPerson", p);
小結:
自已學習這些時出的問題最多的還是設定檔上的問題,我的解決方案是在引用dll時我引用的是自已編譯Source-revision-426164後的dll.這樣做的目的是我們在出錯時可以跟蹤到原始碼中自已檢視其中的錯誤,要不程式出現一個什麼配置錯誤的異常是讓人很鬱悶的!
希望我的例子能協助哪些和我一樣剛學IBatisNet的朋友!~