众所周知,Ibatis的核心就在于映射文件(Data Map XML File),在调用存储过程返回取得返回参数的过程中,最有可能出错的地方,就是映身文件的配置
我的开发环境地是(VS2008(.Net2.0)+Win2003Server+Oracle 10g)
直接进入主题,先来看一个资料
调用存储过程只能用到<procedure>(当然,我在博客园也见到一些朋友介绍说可以使用<statement>标签,但经过小弟在测试调用Oracle数据库一直报错String类型没有长度限制,后来改成<procedure>就正常了)
<
statements
>
< procedure id ="testProcedure" parametersMap ="paramMap" >
Test.TestProcedure
</ procedure >
</ statements >
< parameterMaps >
< parameterMap id ="paramMap" class ="Hashtable" >
< parameter property ="ID" column ="PS_ID" />
< parameter property ="UserName" column ="PS_USERNAME" />
< parameter property ="PassWord" column ="PS_PASSWORD" />
< parameter property ="returnValue" column ="PS_RETURNVALUE" direction ="Output" />
</ parameterMap >
</ parameterMaps >
< procedure id ="testProcedure" parametersMap ="paramMap" >
Test.TestProcedure
</ procedure >
</ statements >
< parameterMaps >
< parameterMap id ="paramMap" class ="Hashtable" >
< parameter property ="ID" column ="PS_ID" />
< parameter property ="UserName" column ="PS_USERNAME" />
< parameter property ="PassWord" column ="PS_PASSWORD" />
< parameter property ="returnValue" column ="PS_RETURNVALUE" direction ="Output" />
</ parameterMap >
</ parameterMaps >
class一定设置class="Hashtable",当然也可以根据你的实际情况填写;在本文中是以Hashtable为例
Column属性一定要全部大写,否则会报错,找不到该参数(Oracle)
Hashtable map
=
new
Hashtable();
map.Add( " ID " , 1 );
map.Add( " UserName " , " user " );
map.Add( " PassWord " , " pwd " );
map.Add( " returnValue " , - 1 );
mapper.Insert( " testProcedure " , map);
Console.WriteLine(map[ " returnValue " ].ToString());
map.Add( " ID " , 1 );
map.Add( " UserName " , " user " );
map.Add( " PassWord " , " pwd " );
map.Add( " returnValue " , - 1 );
mapper.Insert( " testProcedure " , map);
Console.WriteLine(map[ " returnValue " ].ToString());
Ibatis使用简单,就是配置要注意,注意大小写敏感,一般是不会出错的~