这是系统运行过程中获取的sql语句,这里param0和param1都是xml中的StartIndex和EndIndex传入的参数,但是理论上param0和param1应该前面有@符号,才会把实体的值传递给sql语句的参数,所以这个sql语句执行会报错:找不到param0和param1列,其他xml配置文件也都是报错:出现找不到传入参数列问题,除非把#符合改成$符号;但是原来的项目都是#符号,也正常使用。这个项目就不行了……
这个项目特别点是xml配置文件不是嵌入资源,而是通过resource="文件名路径"指定。就是对象的值无法传递给sql语句中的参数,大牛救救我!
不知道ibatis怎么会出现这个问题,大牛靠你了!where RowID BETWEEN param0 and param1 ORDER BY AFUID
<dynamic prepend="where">
<isParameterPresent>
<isNotEmpty prepend="" property="StartIndex">
<isNotEmpty prepend="and" property="EndIndex">
RowID BETWEEN #StartIndex# and #EndIndex#
ORDER BY AFUID
</isNotEmpty>
</isNotEmpty>
</isParameterPresent>
</dynamic>
这个项目特别点是xml配置文件不是嵌入资源,而是通过resource="文件名路径"指定。就是对象的值无法传递给sql语句中的参数,大牛救救我!
不知道ibatis怎么会出现这个问题,大牛靠你了!where RowID BETWEEN param0 and param1 ORDER BY AFUID
<dynamic prepend="where">
<isParameterPresent>
<isNotEmpty prepend="" property="StartIndex">
<isNotEmpty prepend="and" property="EndIndex">
RowID BETWEEN #StartIndex# and #EndIndex#
ORDER BY AFUID
</isNotEmpty>
</isNotEmpty>
</isParameterPresent>
</dynamic>
好像现在的#符号无法获取对象的值:
<isNotEmpty>
<isNotEmpty prepend="and" property="IsAvailable">
IsAvailable = #IsAvailable#
</isNotEmpty>
</isNotEmpty>这段代码用#符号包括IsAvailable就是报错说param0列不存在,用$包括就可以正常使用,,,
name="sqlServer2005"
enabled="true"
description="Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0"
assemblyName="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
connectionClass="System.Data.SqlClient.SqlConnection"
commandClass="System.Data.SqlClient.SqlCommand"
parameterClass="System.Data.SqlClient.SqlParameter"
parameterDbTypeClass="System.Data.SqlDbType"
parameterDbTypeProperty="SqlDbType"
dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"
commandBuilderClass=" System.Data.SqlClient.SqlCommandBuilder"
usePositionalParameters = "false"
useParameterPrefixInSql = "true"
useParameterPrefixInParameter = "true"
parameterPrefix="@"
allowMARS="true"
/>