题
我是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,但是您知道 合并 功能 ?
不隶属于 StackOverflow