我们在使用IBatis.net操作数据的时候,肯定会碰到SQL参数
当我们有一个参数时,IBatis的xml映射文件如下:
<statement id="getProduct" parameterClass="System.Int32"> 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>
在代码中必须赋给他一个Hashtable,并且这个Hashtable具有catId和code两个键值,注意要区分大小写。
HashTable实现了System.Collections.IDictionary接口的,所以直接用他应该也是可以的。
当我们执行存储过程的时候,xml如下:
首先定义参数定义集合
<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>
程序代码如下:
public void InsertPerson3() { SqlMapper sqlmap = IBatisNet.DataMapper.Mapper.Instance(); Hashtable ht = new Hashtable(); ht.Add("FirstName","姚"); ht.Add("LastName","明2"); sqlmap.Insert("InsertPerson3",ht); }
注意:Hashtable中的键值名称和参数集合众的property相对应,并且区分大小写.