由于本人对IBatis.Net的并不是很精通,也是在边学边工作实践,所以IBatis.Net系列的文章会显的没有一定的连贯性,
这些文章应该是我平时的关于IBatis.Net的一些知识的积累吧。下面进入正题:
我们在使用IBatis.net操作数据的时候,肯定会碰到SQL参数
当我们有一个参数时,IBatis的xml映射文件如下:
<
statement
id
="getProduct"
parameterClass
="System.Int32"
>
select * from PRODUCT where PRD_ID = #value#
</ statement >
select * from PRODUCT where PRD_ID = #value#
</ statement >
当我们有多个参数时,xml如下:
<
statement
id
="getProduct"
parameterClass
="System.Collections.IDictionary"
>
select * from PRODUCT
where PRD_CAT_ID = #catId#
and PRD_CODE = #code#
</ statement >
select * from PRODUCT
where PRD_CAT_ID = #catId#
and PRD_CODE = #code#
</ statement >
在代码中必须赋给他一个Hashtable,并且这个Hashtable具有catId和code两个键值,注意要区分大小写。
当我们执行存储过程的时候,xml如下:
首先定义参数定义集合
<
parameterMaps
>
< parameterMap id ="insertperson" class ="Person" >
< parameter property ="FirstName" column ="PER_FIRST_NAME" />
< parameter property ="LastName" column ="PER_LAST_NAME" />
</ parameterMap >
</ parameterMaps >
< parameterMap id ="insertperson" class ="Person" >
< parameter property ="FirstName" column ="PER_FIRST_NAME" />
< parameter property ="LastName" column ="PER_LAST_NAME" />
</ parameterMap >
</ parameterMaps >
然后定义操作
<!--
使用存储过程
-->
< procedure id ="InsertPerson3" parameterMap ="insertperson" resultMap ="SelectResult" >
usp_InsertPerson
</ procedure >
< procedure id ="InsertPerson3" parameterMap ="insertperson" resultMap ="SelectResult" >
usp_InsertPerson
</ procedure >
程序代码如下:
public
void
InsertPerson3()
{
SqlMapper sqlmap = IBatisNet.DataMapper.Mapper.Instance();
Hashtable ht = new Hashtable();
ht.Add("FirstName","姚");
ht.Add("LastName","明2");
sqlmap.Insert("InsertPerson3",ht);
}
{
SqlMapper sqlmap = IBatisNet.DataMapper.Mapper.Instance();
Hashtable ht = new Hashtable();
ht.Add("FirstName","姚");
ht.Add("LastName","明2");
sqlmap.Insert("InsertPerson3",ht);
}
注意:Hashtable中的键值名称和参数集合众的property相对应,并且区分大小写.
代码下载:/Files/maplye/IBatisDemo.rar