我的动态查询出错了。这是我的查询:
<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
不为null,则查询有效。但是如果属性为null而另一个属性LastName
不为null,则会出现SQL错误。
因为在这种情况下,SQL语句变为如下:
select * from Tbl_Member WHERE AND LAST_NAME = ? ...
如果第一个属性变为AND
Null
P.S:
我也试过removeFirstPrepend="true"
<isNotNull prepend="and" property="lastName" removeFirstPrepend="true">
LAST_NAME = #lastName#
</isNotNull>
但不幸的是,它也不起作用。
答案 0 :(得分:3)
尝试
<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