Как создать надежный скрипт datamapper в xml, если в целевой хранимой процедуре добавлены некоторые параметры, но действительно с значениями по умолчанию?ibatis datamapper скрипты хранимой процедуры с некоторыми параметрами по умолчанию
Например, я разработал хранимую процедуру с некоторыми параметрами по умолчанию, как это,
CREATE PROCEDURE [dbo].[SP_Test_1]
@mode int = 1 -- skippable
AS
RETURN 1
MyBatis DataMapper в XML, как это,
<procedure id="myDBService.exeSPTest1">
SP_Test_1
</procedure>
Так я назвал это заявление,
IList<myStruct> list = myDataSource.QueryForList<myStruct>("myDBService.exeSPTest1", null);
Но всегда получалось такие ошибки,
[ArgumentOutOfRangeException: index]
IBatisNet.DataMapper.Configuration.ParameterMapping.ParameterPropertyCollection.get_Item(Int32 index) +88
IBatisNet.DataMapper.Configuration.ParameterMapping.ParameterMap.GetProperty(Int32 index) +76
IBatisNet.DataMapper.Commands.DefaultPreparedCommand.ApplyParameterMap(ISqlMapSession session, IDbCommand command, RequestScope request, IStatement statement, Object parameterObject) +395
IBatisNet.DataMapper.Commands.DefaultPreparedCommand.Create(RequestScope request, ISqlMapSession session, IStatement statement, Object parameterObject) +439
IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForList(ISqlMapSession session, Object parameterObject) +125
IBatisNet.DataMapper.SqlMapper.QueryForList(String statementName, Object parameterObject) +251
, пока я не дал parameterMap тег, а затем работает,
<procedure id="myDBService.exeSPTest1" parameterMap="myDBService.params-exeSPTest1">
SP_Test_1
</procedure>
<parameterMap id="myDBService.params-exeSPTest1" class="Hashtable">
<parameter column="mode" property="mode" dbType="int" type="int" />
</parameterMap>
Hashtable ht = new Hashtable();
ht.Add("mode", 1);
IList<myStruct> list = myDataSource.QueryForList<myStruct>("myDBService.exeSPTest1", ht);
Хотя он работал после этого, я на самом деле хочу, гибкие параметры, введенные множеством вызовов процедур. Например, в том же порядке, что я могу сделать это иметь мульти параметры без изменения каких-либо передний уровневую код, как это,
CREATE PROCEDURE [dbo].[SP_Test_1]
@mode int = 1, -- skippable
@reserved int = 1 -- used in the future, still skippable
AS
RETURN 1
Дело в том, не изменяются и параметры кода или XML переднего уровня, если добавить пропускаемые параметры в хранимой процедуре. Любая идея будет оценена по достоинству. Спасибо.