1.关于IBatis及IBatisNet
iBatis是又一个O/R Mapping解决方案,j2ee的O/R方案真是多,和Hibernate相比,iBatis最大的特点就
是小巧,上手很快。如果你不需要太多复杂的功能,iBatis是能满足你的要求又足够灵活的最简单的解
决方案。
iBatisNet是iBatis的.NET版本。
iBatis及iBatisNet的主站是www.ibatis.com
//copyright 任飞扬
2.下载
http://www.ibatis.com/common/download.html
当然需要将IBatisNet.Common.dll,IBatisNet.DataMapper.dll,IBatisNet.DataAccess.dll等引用到
你的项目中
另外有一些数据库连接驱动包,在"NPetShop Example
Application"的范例中的目录"source/External-bin/"中可以找到.
下面进行实践第一个IBatisNet项目
1.数据库:
使用SQLServer2000:
在Northwind的test中建立表Person
CREATE TABLE [Person] (
[PER_ID] [int] NOT NULL ,
[PER_FIRST_NAME] [varchar] (40) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[PER_LAST_NAME] [varchar] (40) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[PER_BIRTH_DATE] [datetime] NOT NULL ,
[PER_WEIGHT_KG] [float] NOT NULL ,
[PER_HEIGHT_M] [float] NOT NULL
)
2.添加配置文件
SqlMap.config(我的理解是:SqlMap.config是IBatisNet默认读取的配置文件,暂时不知道怎样使IBatisN
et读文件来取代SqlMap.config)
<?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="sqlServer1.1"></provider>
<dataSource name="iBatisTest"
connectionString="server=localhost;database=test;user id=sa;password=123;connection
reset=false;connection lifetime=5; min pool size=1; max pool size=50"/>
</database>
<sqlMaps>
<sqlMap resource="Person.xml" />
</sqlMaps>
</sqlMapConfig>
//<database>定义了数据库连接方法,我这里采用的是连接SQLServer2000的,你可以根据自己需要修改
//providers.config文件是配置数据库连接方式的文件,可以去下载官方的providers.config的文件,比较长,就不贴出来了
//copyright 任飞扬
3.加入映射文件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="iBatisTest.dll"
type="iBatisTest.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>
//copyright 任飞扬
4.下面是测试代码:
private void Button1_Click(object sender, System.EventArgs e)
{
DataGrid1.DataSource = Mapper.Instance().QueryForList("SelectAll",null);
DataGrid1.DataBind();
}