0

我是 iBatis 的新手,我在和元素上苦苦挣扎。

我想遍历作为 HashMap 传入的 Book 实例列表(例如):MyParameters。该列表将被称为 listOfBooks。

因此,整个 SQL 语句的子句将如下所示:

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

我还需要在迭代元素中生成不同的 SQL,具体取决于“listOfBooks”列表中每个 Book 实例的属性是否为空。

所以,我需要这样的声明:

 <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”的“READABLE”属性。但是,每个 Book 实例包含一个 title 属性,所以我很困惑!我只能假设我在尝试查明 listOfBooks 中特定 Book 实例的标题时已经掌握了语法。我正在努力寻找正确的技术来尝试实现这一目标。如果有人可以建议前进的方向,我将不胜感激。

谢谢

4

1 回答 1

0

我想

property="MyParameter.listOfBooks.title"

指示 Ibatis 在对象中查找一个title属性,该MyParameter.listOfBooks对象实际上是一个列表。您不希望这样,您想在列表的每个元素(例如“光标”)中查找该属性。

In Ibatis, inside the <iterate> tag, the syntax MyParameter.listOfBooks[] is used to reference that element instead of the full list (ref), I don't know if it will work inside a tag attribute, you might try: either

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

or perhaps even

<isNull property="title">

BTW, I don't know the DB you are using, but are you aware of the COALESCE function ?

于 2010-04-26T17:39:00.520 回答