使用的 ibatis 问题迭代列表时

发布于 2024-08-29 23:30:31 字数 969 浏览 5 评论 0原文

我是 iBatis 的新手,我正在与 和 元素作斗争。

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

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

<iterate prepend="AND" property="MyParameters.listOfBooks" conjunction="AND" open="(" close=")">
...
</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 属性,所以我很困惑!我只能假设我已经在尝试精确定位 listOfBooks 中特定 Book 实例的标题时管理了语法。 我正在努力寻找正确的技术来实现这一目标。如果有人能提出前进的建议,我将不胜感激。

谢谢

I'm new to iBatis and I'm struggling with the and elements.

I want to iterate over a List of Book instances (say) that are passed in as a HashMap: MyParameters. The list will be called listOfBooks.

The clause of the overall SQL statement will therefore look like this:

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

I also need to produce different SQL within the iterate elements depending on whether a property of each Book instance in the 'listOfBooks' List is null, or not.

So, I need a statement something like this:

 <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>

When I do this I get an error message stating that there is no "READABLE" property named 'title' in my Book class. However, each Book instance does contain a title property, so I'm confused! I can only assuem that I have managled the syntax in trying to pinpoint the title of particular Book instance in listOfBooks.
I'm struggling to find the correct technique for trying to achieve this. If anyone can advise a way forward I'd be grateful.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一枫情书 2024-09-05 23:30:31

我想

property="MyParameter.listOfBooks.title"

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

在 Ibatis 中,在 标记内,语法 MyParameter.listOfBooks[] 用于引用该元素而不是完整列表 (ref),我不知道它是否会在标签属性内工作,您可以尝试:或者

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

或者也许甚至

<isNull property="title">

顺便说一句,我不知道您正在使用的数据库,但是您是否知道 COALESCE 功能?

I suppose

property="MyParameter.listOfBooks.title"

instructs Ibatis to lookup a title property in the MyParameter.listOfBooks object, which is actually a list. You don't want that, you want to lookup that property in each element of the list (the 'cursor', say).

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 ?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文