asp.net 中Ibatisnets使用说明

Ibatisnets使用说明

1、 配置文件:

⑴、 providers.config

设置连接数据库的类型及连接参数。数据库类型包括:"sqlServer1.0"、"sqlServer1.1"、"OleDb1.1"、"Odbc1.1"、"oracle9.2"、"ByteFx"、"MySQLAB1Beta"、"Npgsql"

⑵、 sqlmap.config

设置providers文件名、数据库类型、数据库连接串、SQLMap对应的XML文件名。(以sqlserver2000自带的数据库pubs的表employee为例)文件内容如下:

 

/*XML文件头

<?xml version="1.0" encoding="utf-8" ?> 

<sqlMapConfig xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:noNamespaceSchemaLocation="SqlMapConfig.xsd">

<settings>

<setting useStatementNamespaces="false"/>

<setting cacheModelsEnabled="true"/>

</settings>

 

/*定义providers文件名

<providers file="providers.config"/>

 

/*定义数据库类型及数据库连接串

<database>

<provider name="sqlServer1.1"/>

<dataSource name="pubs"connectionString="datasource=wzm;database=pubs;userid=sa;password=wangzhimin;connection reset=false;connection lifetime=5; min pool size=1; max pool size=50"/>

 </database>

 

/* 定义SQLMap对应的XML文件名

<sqlMaps>

  <sqlMap resource="employee.xml"/>

 </sqlMaps>

 

</sqlMapConfig>

 

其中XML的文件名规则为: 表名.xml

 

2、 MAP XML文件

sqlserver自带的数据库pubs的表employee为例,文件名为employee.xml

文件内容如下:

/*命名空间的规则为 表名

<?xml version="1.0" encoding="utf-8" ?> 

<sqlMap namespace="Employee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xsi:noNamespaceSchemaLocation="Schemas\SqlMap.xsd">

 

/*定义有用到的映射类及其对应的别名、项目所在的动态链接库文件及类的引用名称,可以有多个类别名定义。别名的命名规则为:类名

 

<alias>

<typeAlias alias="employee" assembly="DataAcess.WebSvr.dll" type="DataAcess.WebSvr.employee" />

</alias>

 

/*定义映射的结果,包括映射的ID、对应的映射类别名、表字段名及其映射的类属性名。

<resultMaps> 

   /*映射结果ID的命名规则为:类名+result。

<resultMap id="employee-result"  class="employee" >

<result property="Emp_ID"    column="emp_id"   />

<result property="FName" column="fname"    />

<result property="LName" column="lname"    />

<result property="Minit" column="minit"    />

<result property="Hire_Date" column="hire_date"  />

<result property="Pub_ID" column="pub_id"   />

<result property="Job_ID" column="job_id" />

<result property="Job_Lvl" column="job_lvl" />

</resultMap>

 

</resultMaps>

 

/*定义声明操作数据库的SQL命令,及其映射ID、输入参数、输出参数。

映射ID的命名规则:操作+表名;操作包括:Select、Insert、Update、Delete。

 

<statements>

<select id="SelectEemployeeAll" resultMap="employee-result" >

select * from employee   

</select>

 

<insert id="InsertEmployee" parameterClass="employee">

insert into employee 

( emp_id,fname,lname,minit,job_id,job_lvl,pub_id,hire_date)

values ( #Emp_ID#, #FName#, #LName#, #Minit#, #Job_ID#, #Job_Lvl#, #Pub_ID#, #Hire_Date#)

</insert>

 

<update id="UpdateEmployee" parameterClass="employee">

update employee set

 fname=#FName#,

 lname=#LName#,

 minit=#Minit#,

 job_id=#Job_ID#,

 job_lvl=#Job_Lvl#,

 pub_id=#Pub_ID#,

 hire_date=#Hire_Date#

where emp_id = #Emp_ID#

</update>

 

<delete id="DeleteEmployee" parameterClass="string" >

delete from employee where emp_id = #value#

</delete>

 

<select id="SelectEemployee" parameterClass="string" resultMap = "employee-result">

select * from employee 

//动态SQL语句

  <dynamic prepend="WHERE">

 <isParameterPresent>

   emp_id = #value#

 </isParameterPresent>

  </dynamic>

</select>

 

</statements>

 

</sqlMap>

/*动态SQL的写法:

开始 <dynamic 

条件成立时前面要加的字符串 prepend ="字符串">

<属性关键字  (见下表)

prepend="字符串"

判断条件的对象属性名 property="字符串"

如果是属性关键字是比较条件时,字符串存放要比较的值compareValue="字符串">

要显示的条件名

</属性关键字>

结束</dynamic>

 

*/

/*动态SQL的参数有

属性关键字

含义

<isEqual>

如果参数相等于值则查询条件有效。

<isNotEqual>

如果参数不等于值则查询条件有效。

<isGreaterThan>

如果参数大于值则查询条件有效。

<isGreaterEqual>

如果参数等于值则查询条件有效。

<isLessEqual>

如果参数小于值则查询条件有效。如下所示:

<isLessEqual prepend = ”AND” property = ”age” compareValue = ”18” >

ADOLESCENT = ‘TRUE’

</isLessEqual>

<isPropertyAvailable>

如果参数有使用则查询条件有效。

<isNotPropertyAvailable>

如果参数没有使用则查询条件有效。

<isNull>

如果参数为NULL则查询条件有效。

<isNotNull>

如果参数不为NULL则查询条件有效。

<isEmpty>

如果参数为空则查询条件有效。

<isNotEmpty>

如果参数不为空则查询条件有效。参数的数据类型为Collection、String 时参数不为NULL或“”。如下所示:

<isNotEmpty prepend=”AND” property=”firstName” >

FIRST_NAME=#firstName#

</isNotEmpty>

<isParameterPresent>

如果参数类不为NULL则查询条件有效。

<isNotParameterPresent>

Checks to see if the parameter object is not present (null). Example Usage:

<isNotParameterPresent prepend=”AND”>

EMPLOYEE_TYPE = ‘DEFAULT’

</isNotParameterPresent>

 

 

3、 数据表对象文件

sqlserver2000自带的数据库pubs的表employee为例,employee.cs

文件内容如下:

public class employee

{

private string _Emp_ID;

private string _FName;

private string _LName;

private string _Minit;

private System.Int16   _Job_ID;

private System.Byte   _Job_Lvl;

private string _Pub_ID;

private DateTime _Hire_Date;

 

public string Emp_ID

{

get {return _Emp_ID; }

set {_Emp_ID = value;}

}

public string FName

{

get {return _FName; }

set {_FName = value;}

}

public string LName

{

get {return _LName; }

set {_LName = value;}

}

public string Minit

{

get {return _Minit; }

set {_Minit = value;}

}

public System.Int16 Job_ID

{

get {return _Job_ID; }

set {_Job_ID = value;}

}

public System.Byte Job_Lvl

{

get {return _Job_Lvl; }

set {_Job_Lvl = value;}

}

public string Pub_ID

{

get {return _Pub_ID; }

set {_Pub_ID = value;}

}

public DateTime Hire_Date

{

get {return _Hire_Date; }

set {_Hire_Date = value;}

}

}

其中SQL Server的数据类型与C#的数据类型对照表为:

C#的数据类型

SQL Server数据类型

Byte[] 

Binary, Image, VarBinary

Boolean

Bit

Byte

TinyInt

DateTime

DateTime, SmallDateTime

Decimal

Decimal, Money, SmallMoney

Double

Float

Guid

UniqueIdentifier

Int16

SmallInt

Int32

Int

Int64

BigInt

Single

Real

String

Char, Nchar, NVarchar, Text, VarChar

UInt16

Int 

UInt32

Decimal 

UInt64

Decimal 

 

 

 

posted @ 2012-07-02 15:29  张涵哲琪  阅读(191)  评论(0编辑  收藏  举报