3

動的クエリでエラーが発生しました。これは私が持っているクエリです:

<dynamic>
    select * from Tbl_Member
    WHERE

    <isNotNull property="FirstName">
      FIRST_NAME = #lastName#
    </isNotNull>

    <isNotNull prepend="and" property="lastName">
      LAST_NAME = #lastName#
    </isNotNull>

    <isNotNull prepend="and" property="">

    </isNotNull>

     .
     .
     .
     .

</dynamic>

プロパティFirstNameが null でない場合、クエリは機能します。しかし、プロパティが null で、もう一方の左側のプロパティLastNameが null でない場合、SQL エラーが発生します。

この状態では、SQL ステートメントは次のようになるためです。

  select * from Tbl_Member WHERE AND LAST_NAME = ? ...

AND最初のプロパティが次のようになった場合、最初に追加されたものを削除するにはどうすればよいですかNull

PS:

私も試しましたremoveFirstPrepend="true"

<isNotNull prepend="and" property="lastName" removeFirstPrepend="true">
  LAST_NAME = #lastName#
</isNotNull>

しかし、残念ながら、それも機能しません。

4

1 に答える 1

3

試してみてください

<dynamic prepend="WHERE">

select * from Tbl_Member
<dynamic prepend="WHERE">

<isNotNull prepend="and" property="FirstName">
  FIRST_NAME = #lastName#
</isNotNull>

<isNotNull prepend="and" property="lastName">
  LAST_NAME = #lastName#
</isNotNull>

<isNotNull prepend="and" property="">

</isNotNull>

 .
 .
 .
 .

</dynamic>

http://ibatis.apache.org/docs/dotnet/datamapper/ch03s09.html

于 2012-05-10T05:15:33.147 に答える