0

私は iBatis を初めて使用し、要素と要素に苦労しています。

HashMap: MyParameters として渡される Book インスタンスのリスト (たとえば) を反復処理したいと考えています。リストは listOfBooks と呼ばれます。

したがって、SQL ステートメント全体の句は次のようになります。

<iterate prepend="AND" property="MyParameters.listOfBooks" conjunction="AND" open="(" close=")">
...
</iterate>

また、「listOfBooks」リスト内の各 Book インスタンスのプロパティが null であるかどうかに応じて、反復要素内で異なる SQL を生成する必要があります。

したがって、次のようなステートメントが必要です。

 <iterate prepend="AND" property="MyParameters.listOfBooks" conjunction="AND" open="(" close=")">
        <isNull property="MyParameter.listOfBooks.title">
<!-- SQL clause #1 here -->

        </isNull>
  <isNotNull property="MyParameter.listOfBooks.title">
<!-- SQL clause #2 here -->
 </isNotNull>

これを行うと、Book クラスに「title」という名前の「読み取り可能な」プロパティがないというエラー メッセージが表示されます。ただし、各 Book インスタンスにはtitle プロパティが含まれているため、混乱しています! listOfBooks で特定の Book インスタンスのタイトルを特定しようとして、構文を操作したとしか思えません。これを達成するための正しいテクニックを見つけるのに苦労しています。誰かが前進する方法をアドバイスできるなら、私は感謝します。

ありがとう

4

1 に答える 1

0

私は考えます

property="MyParameter.listOfBooks.title"

実際にはリストであるオブジェクトtitle内のプロパティをルックアップするよう Ibatis に指示します。MyParameter.listOfBooksあなたはそれを望まず、リストの各要素(「カーソル」など)でそのプロパティを検索したいと考えています。

Ibatis では、タグ内で、完全なリスト ( ref<iterate> ) ではなく、その要素を参照するために構文が使用されます。タグ属性内で機能するかどうかはわかりません。次のいずれかを試してください。MyParameter.listOfBooks[]

<isNull property="MyParameter.listOfBooks[].title">

またはおそらく

<isNull property="title">

ところで、あなたが使用しているDBはわかりませんが、COALESCE機能を知っていますか?

于 2010-04-26T17:39:00.520 に答える