iBatis 中的动态查询错误

4

我遇到了一个动态查询的错误。这是我的查询语句:

<dynamic>
    select * from Tbl_Member
    WHERE

    <isNotNull property="FirstName">
      FIRST_NAME = #lastName#
    </isNotNull>

    <isNotNull prepend="and" property="lastName">
      LAST_NAME = #lastName#
    </isNotNull>

    <isNotNull prepend="and" property="">

    </isNotNull>

     .
     .
     .
     .

</dynamic>

如果属性FirstName不为空,查询就可以运行。但是如果这个属性为空,而另一个左侧的属性LastName不为空,我会得到一个SQL错误。
因为在这种情况下,SQL语句变成如下形式:
  select * from Tbl_Member WHERE AND LAST_NAME = ? ...

如何在第一个属性变为 Null 时删除首个前置的 AND
附注:
我也尝试了 removeFirstPrepend="true"
<isNotNull prepend="and" property="lastName" removeFirstPrepend="true">
  LAST_NAME = #lastName#
</isNotNull>

但不幸的是,它也没有起作用。
1个回答

4

请尝试使用

<dynamic prepend="WHERE">

select * from Tbl_Member
<dynamic prepend="WHERE">

<isNotNull prepend="and" property="FirstName">
  FIRST_NAME = #lastName#
</isNotNull>

<isNotNull prepend="and" property="lastName">
  LAST_NAME = #lastName#
</isNotNull>

<isNotNull prepend="and" property="">

</isNotNull>

 .
 .
 .
 .

</dynamic>

http://ibatis.apache.org/docs/dotnet/datamapper/ch03s09.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接