我是iBatis的新手,我正在和元素进行斗争。
我要遍历所传递作为一个HashMap书实例(说)的列表:MyParameters。该列表将被称为listOfBooks。
整个SQL语句的子句如下所示:
<iterate prepend="AND" property="MyParameters.listOfBooks" conjunction="AND" open="(" close=")">
...
</iterate>
我还需要在iterate元素中生成不同的SQL,具体取决于'listOfBooks'列表中每个Book实例的属性是否为null。
所以,我需要这样的声明:
<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属性,所以我很困惑!我只能说我一直在试图查明特定Book实例的listOfBooks标题managled语法assuem。 我正在努力找到尝试实现这一目标的正确技术。如果有人能指出前进的方向,我将不胜感激。
由于
答案 0 :(得分:0)
我想
property="MyParameter.listOfBooks.title"
指示Ibatis在title
对象中查找MyParameter.listOfBooks
属性,该对象实际上是一个列表。你不希望这样,你想在列表的每个元素中查找该属性(比如说'游标')。
在Ibatis中,在<iterate>
标记内,语法MyParameter.listOfBooks[]
用于引用该元素而不是完整列表(ref),我不知道它是否可行在标记属性中,您可以尝试:
<isNull property="MyParameter.listOfBooks[].title">
或者甚至
<isNull property="title">
顺便说一下,我不知道您正在使用的数据库,但是您知道COALESCE函数吗?