ibatis динамический оператор выбора с двумя динамическими prepend = "WHERE" - PullRequest
0 голосов
/ 29 марта 2012

Здравствуйте, я хотел бы сделать сложный динамический оператор выбора с двумя динамическими представками = "WHERE"

Я написал это в файле 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 возвращает успешно результаты ma с Ibatis, запускает метод java, результат отладки равен 0.

Возможно ли выполнить оператор в IBATIS для динамического построения местоположения двух подзапросов?

1 Ответ

0 голосов
/ 26 июня 2012

Я обычно так делаю в вашем случае:

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

Но это не должно влиять на результат.

Я подозреваю, что тип данных поля "code" - Varchar2. Если это так, проверьте, был ли обрезан параметр # field # или нет. Возможно, в параметре есть лишние пробелы. Также проверьте поле «код» в БД на предмет наличия данных, содержащих лишний пробел. Это может привести к несчастью при попытке обнаружить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...