這個Demo是按IBatisNet的Tutorial的代碼修改,並可以完整的運行(Tutorial寫了入門,但它提供的代碼說明做的不好,還要看DevGuide)
程序包括:
數據庫表 Person(和Tutorial一致,使用Access,用OleDb連接,後面的SqlMap定義連接串)
NUnit測試客戶端 TestPeron.cs(和Tutorial一致,使用NUnit2.0)
Web頁面測試WebForm1.aspx, WebForm1.aspx.cs
值對象Person.cs(這個類和數據庫表是一致的,應該用代碼生成器生成,網上有很多好的代碼生成器,這裏推薦一個CodeSmith)
數據庫映射文件
Person.xml
SqlMap.xml
恩,不錯
程序包括:
數據庫表 Person(和Tutorial一致,使用Access,用OleDb連接,後面的SqlMap定義連接串)
Name Type Size
PER_ID Long Integer 4
PER_FIRST_NAME Text 40
PER_LAST_NAME Text 40
PER_BIRTH_DATE Date/Time 8
PER_WEIGHT_KG Double 8
PER_HEIGHT_M Double 8
PER_ID Long Integer 4
PER_FIRST_NAME Text 40
PER_LAST_NAME Text 40
PER_BIRTH_DATE Date/Time 8
PER_WEIGHT_KG Double 8
PER_HEIGHT_M Double 8
NUnit測試客戶端 TestPeron.cs(和Tutorial一致,使用NUnit2.0)
using System;
using System.Collections;
using IBatisNet.DataMapper;
using NUnit.Framework;
namespace TestPeople
{
[TestFixture]
public class PersonTest
{
[Test]
public void PersonList ()
{
// try it
IList people = Mapper.Instance().QueryForList("SelectAll",null);
// test it
Assert.IsNotNull(people,"Person list not returned");
Assert.IsTrue(people.Count>0,"Person list is empty");
Person person = (Person) people[0];
Assert.IsNotNull(person,"Person not returned");
}
}
}
using System.Collections;
using IBatisNet.DataMapper;
using NUnit.Framework;
namespace TestPeople
{
[TestFixture]
public class PersonTest
{
[Test]
public void PersonList ()
{
// try it
IList people = Mapper.Instance().QueryForList("SelectAll",null);
// test it
Assert.IsNotNull(people,"Person list not returned");
Assert.IsTrue(people.Count>0,"Person list is empty");
Person person = (Person) people[0];
Assert.IsNotNull(person,"Person not returned");
}
}
}
Web頁面測試WebForm1.aspx, WebForm1.aspx.cs
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="TestPeople.WebForm1" %>
<HTML>
<HEAD>
<title>WebForm1</title>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Person" method="post" runat="server">
<asp:Panel ID="pnlList" Runat="server">
<H1>Person List</H1>
<asp:DataGrid id=dgList Runat="server"></asp:DataGrid>
</asp:Panel></form>
</body>
</HTML>
<HTML>
<HEAD>
<title>WebForm1</title>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Person" method="post" runat="server">
<asp:Panel ID="pnlList" Runat="server">
<H1>Person List</H1>
<asp:DataGrid id=dgList Runat="server"></asp:DataGrid>
</asp:Panel></form>
</body>
</HTML>
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using IBatisNet.DataMapper;
using IBatisNet.Common.Utilities;
namespace TestPeople
{
/// <summary>
/// WebForm1 的摘要說明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid dgList;
protected System.Web.UI.WebControls.Panel pnlList;
private void List_Load ()
{
dgList.DataSource = Mapper.Instance().QueryForList("SelectAll",null);
dgList.DataBind();
}
private void Page_Load(object sender, System.EventArgs e)
{
// 在此處放置用戶代碼以初始化頁面
if (!IsPostBack)
{
List_Load ();
}
}
Web 窗體設計器生成的代碼
}
}
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using IBatisNet.DataMapper;
using IBatisNet.Common.Utilities;
namespace TestPeople
{
/// <summary>
/// WebForm1 的摘要說明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid dgList;
protected System.Web.UI.WebControls.Panel pnlList;
private void List_Load ()
{
dgList.DataSource = Mapper.Instance().QueryForList("SelectAll",null);
dgList.DataBind();
}
private void Page_Load(object sender, System.EventArgs e)
{
// 在此處放置用戶代碼以初始化頁面
if (!IsPostBack)
{
List_Load ();
}
}
Web 窗體設計器生成的代碼
}
}
值對象Person.cs(這個類和數據庫表是一致的,應該用代碼生成器生成,網上有很多好的代碼生成器,這裏推薦一個CodeSmith)
using System;
namespace TestPeople
{
/// <summary>
/// Person 的摘要說明。
/// </summary>
public class Person
{
private int _Id;
private string _FirstName;
private string _LastName;
private DateTime _BirthDate;
private double _WeightInKilograms;
private double _HeightInMeters;
public Person() {}
public int Id
{
get { return _Id;}
set {_Id = value;}
}
public string FirstName
{
get{return _FirstName;}
set{_FirstName = value;}
}
public string LastName
{
get{return _LastName;}
set{_LastName = value;}
}
public DateTime BirthDate
{
get{return _BirthDate;}
set{_BirthDate = value;}
}
public double WeightInKilograms
{
get{return _WeightInKilograms;}
set{_WeightInKilograms = value;}
}
public double HeightInMeters
{
get{return _HeightInMeters;}
set{_HeightInMeters = value;}
}
}
}
namespace TestPeople
{
/// <summary>
/// Person 的摘要說明。
/// </summary>
public class Person
{
private int _Id;
private string _FirstName;
private string _LastName;
private DateTime _BirthDate;
private double _WeightInKilograms;
private double _HeightInMeters;
public Person() {}
public int Id
{
get { return _Id;}
set {_Id = value;}
}
public string FirstName
{
get{return _FirstName;}
set{_FirstName = value;}
}
public string LastName
{
get{return _LastName;}
set{_LastName = value;}
}
public DateTime BirthDate
{
get{return _BirthDate;}
set{_BirthDate = value;}
}
public double WeightInKilograms
{
get{return _WeightInKilograms;}
set{_WeightInKilograms = value;}
}
public double HeightInMeters
{
get{return _HeightInMeters;}
set{_HeightInMeters = value;}
}
}
}
數據庫映射文件
Person.xml
<?xml version="1.0" encoding="utf-8" ?>
<sqlMap namespace="Person" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="SqlMap.xsd">
<alias>
<typeAlias alias="Person" assembly="TestPeople.dll" type="TestPeople.Person" />
</alias>
<resultMaps>
<resultMap id="SelectAllResult" class="Person">
<result property="Id" column="PER_ID" />
<result property="FirstName" column="PER_FIRST_NAME" />
<result property="LastName" column="PER_LAST_NAME" />
<result property="BirthDate" column="PER_BIRTH_DATE" />
<result property="WeightInKilograms" column="PER_WEIGHT_KG" />
<result property="HeightInMeters" column="PER_HEIGHT_M" />
</resultMap>
</resultMaps>
<statements>
<select id="SelectAll" resultMap="SelectAllResult">
select
PER_ID,
PER_FIRST_NAME,
PER_LAST_NAME,
PER_BIRTH_DATE,
PER_WEIGHT_KG,
PER_HEIGHT_M
from PERSON
</select>
</statements>
</sqlMap>
<sqlMap namespace="Person" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="SqlMap.xsd">
<alias>
<typeAlias alias="Person" assembly="TestPeople.dll" type="TestPeople.Person" />
</alias>
<resultMaps>
<resultMap id="SelectAllResult" class="Person">
<result property="Id" column="PER_ID" />
<result property="FirstName" column="PER_FIRST_NAME" />
<result property="LastName" column="PER_LAST_NAME" />
<result property="BirthDate" column="PER_BIRTH_DATE" />
<result property="WeightInKilograms" column="PER_WEIGHT_KG" />
<result property="HeightInMeters" column="PER_HEIGHT_M" />
</resultMap>
</resultMaps>
<statements>
<select id="SelectAll" resultMap="SelectAllResult">
select
PER_ID,
PER_FIRST_NAME,
PER_LAST_NAME,
PER_BIRTH_DATE,
PER_WEIGHT_KG,
PER_HEIGHT_M
from PERSON
</select>
</statements>
</sqlMap>
SqlMap.xml
<?xml version="1.0" encoding="UTF-8" ?>
<sqlMapConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="SqlMapConfig.xsd">
<providers file="providers.config" />
<settings>
<setting useFullyQualifiedStatementNames="false" />
<setting cacheModelsEnabled="true" />
</settings>
<database>
<provider name="OleDb1.1" />
<dataSource name="Access" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C://Inetpub//wwwroot//TestPeople//test.mdb" />
</database>
<sqlMaps>
<sqlMap resource="Person.xml" />
</sqlMaps>
</sqlMapConfig>
<sqlMapConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="SqlMapConfig.xsd">
<providers file="providers.config" />
<settings>
<setting useFullyQualifiedStatementNames="false" />
<setting cacheModelsEnabled="true" />
</settings>
<database>
<provider name="OleDb1.1" />
<dataSource name="Access" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C://Inetpub//wwwroot//TestPeople//test.mdb" />
</database>
<sqlMaps>
<sqlMap resource="Person.xml" />
</sqlMaps>
</sqlMapConfig>
恩,不錯