我是Ibatis的新手,我正在努力和元素。

我想迭代以hashmap:myparameters的方式传递的书籍实例列表(例如)。该列表将称为ListOfBooks。

因此,总体SQL语句的条款将看起来像这样:

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

我还需要根据“ Listofbooks”列表中每个书籍实例的属性是否为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>

当我这样做时,我会收到一条错误消息,说明我的书类中没有名为'title'的“可读”属性。但是,每个书籍实例 包含标题属性,所以我很困惑!我只能提出我在试图查明ListOfBooks中特定书籍实例标题时对语法进行了管理。我正在努力寻找尝试实现这一目标的正确技术。如果有人可以建议前进的方向,我将不胜感激。

谢谢

有帮助吗?

解决方案

我想

property="MyParameter.listOfBooks.title"

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

在ibatis,内部 <iterate> 标签,语法 MyParameter.listOfBooks[] 用于引用该元素而不是完整列表(参考),我不知道它在标签属性中是否可以工作,您可以尝试:

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

甚至甚至

<isNull property="title">

顺便说一句,我不知道您正在使用的DB,但是您知道 合并 功能 ?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top