Ibatis的一个Bug
====>我的新浪小铺
本人在使用IBatis进行开发的过程中偶然发现了Ibatis 的一个Bug。
我使用的Oracle数据库,错误的提示是SQL语句示正确结束。
错误的原因是count聚合函数与Oracle中的EXISTS关键字在一起使用的时候,count(*)关键字后面不能换行,
本来这种写法在直接在PL/SQL中运行是不会出错的,但是IBatis在进行SQL语句的组装时发生的了错误,
从而导制了Oracle抛出SQL语句未正确结束的异常。
代码如下
<select id="searchCustomerRecords" resultClass="string"
parameterClass="com.pab.mms.sms.dto.SearchModelDTO">
<![CDATA[
SELECT COUNT(*) FROM MSG_CUSTOMER_INFO C WHERE 1=1
]]>
<isNotEmpty prepend="AND" property="openSite">
<![CDATA[
EXISTS(SELECT 'X' FROM (SELECT A.CUSTOMER_NO FROM
MSG_CUSTOMER_ACCOUNT A WHERE A.OPEN_SITE = #openSite#) R
WHERE C.CUSTOMER_NO=R.CUSTOMER_NO)
]]>
</isNotEmpty>
</select>
红色部分不能换行。。。