2012-05-04 3 views
3

У меня возникла ошибка с динамическим запросом. Это вопрос, что у меня есть:динамическая ошибка запроса в ibatis

<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, а другое свойство left LastName не равно null, я получаю ошибку SQL.

Потому что в этом состоянии SQL заявление становится следующим:

select * from Tbl_Member WHERE AND LAST_NAME = ? ... 

Как я могу удалить первый-предваряется AND если первое свойство становится Null

PS:

Я также попытался removeFirstPrepend="true"

<isNotNull prepend="and" property="lastName" removeFirstPrepend="true"> 
    LAST_NAME = #lastName# 
</isNotNull> 

Но, к сожалению, он тоже не работает.

ответ

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

+0

спасибо за ваш ответ. это работа :) – AKZap

Смежные вопросы