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 |