带有两个动态prepend =“WHERE”的ibatis动态select语句

时间:2012-03-29 15:14:27

标签: sql-server ibatis

你好我想做一个带有两个动态prepend =" WHERE"

的复杂动态select语句

我在文件xml中写了这个:

<select id="myQuery" parameterClass="myClass" resultClass="myResultClass">
SELECT sum(numRows), Sum(fatturato)  FROM
(
    SELECT count(*) as numRighe, ISNULL(sum(a.fatture),0) as fatturato
    FROM MyTable
  <dynamic prepend="WHERE">
   <isNotNull prepend="AND" property="field">
   (code= #field#)
   </isNotNull>
 </dynamic>
  union ALL
  SELECT count(*) as numRighe, ISNULL(sum(a.fatture),0) as fatturato
  FROM TABLE_2
  <dynamic prepend="WHERE">
  <isNotNull prepend="AND" property="field">
  (code= #field#)
  </isNotNull>
  </dynamic>
) as Query
</select>

如果我在Sql Server上执行查询,则返回成功结果 使用Ibatis,启动方法java,调试结果为0。

是否有可能在IBATIS中使用语句来构建两个子查询的位置?

1 个答案:

答案 0 :(得分:0)

我通常会在你的情况下这样做:

   WHERE 1=1 AND 
   <isNotNull prepend="AND" property="field">
      (code= #field#)
   </isNotNull>

但这不应影响结果。

我怀疑“code”字段的数据类型是Varchar2。如果是,请检查#field#参数是否被修剪。参数中可能还有一些多余的空格。同时检查DB中的“代码”字段是否包含多余空格字符的数据。这可能会让您在尝试检测问题时变得悲惨。