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>

 

 

 

 

 

 

 

 

 

 

 

 

红色部分不能换行。。。

 

 

 

 

 

 

 

posted @ 2009-01-15 17:06  枣阳人在深圳  阅读(401)  评论(0编辑  收藏  举报