Справка по динамическим запросам IBatis - PullRequest
1 голос
/ 25 июня 2010

У меня есть таблица "users" со следующими столбцами Идентификатор_пользователя, имя, пол, отдел, ManagerID ....

Я хотел сделать этот запрос, но у меня было 2 проблемы
1. <> в строке 4 вызывает проблему, которая связана с XML. Мне нужно использовать, но я не смог добиться успеха даже после некоторых перестановок.
2. отдел проверки = «проектирование» необходимо выполнять только в том случае, если на карте есть отдел. так что это должно быть динамическим.

Может кто-нибудь набросать, как мне это сделать на Ибатисе. спасибо за помощь !!!

select * from users
where userid=#userid# 
and gender = 'm'
and (managerid ISNULL OR managerid <> #mgrid#)
and department = 'engineering'

Я пробовал это, но не сработало .... любая помощь ??

<select id="getEmployees" parameterClass="java.util.HashMap" resultMap="empResultMap">
<![CDATA[
select * from users
where userid=#userid#
and gender = 'm'
and (managerid ISNULL OR managerid <> #mgrid#)
<dynamic>
    <isNotEmpty property="mgrid">
        ( AND department = #mgrid# )
    </isNotEmpty>
</dynamic>
]]>
</select>

Ответы [ 2 ]

2 голосов
/ 26 июня 2010

Спасибо Кори за быстрый ответ.Ваше предложение отлично сработало.
Если добавить еще один и тот же вопрос, если я хочу иметь несколько AND / OR в динамическом теге, какой должен быть формат?
Я попробовал это, но это не сработало (особенно когда mgrid = "")

Еще раз спасибо за ответ.

<select id="getEmployees" parameterClass="java.util.HashMap" resultMap="empResultMap">
    <![CDATA[
    select * from users
    where userid=#userid#
    and gender = 'm'
    and (managerid IS NULL OR managerid <> #mgrid#)
    ]]>
    <dynamic prepend="AND">
        <isNotEmpty property="mgrid">
            (department = #mgrid#)
        </isNotEmpty>
        <isNotEmpty property="uName" prepend="AND">
            (username = #uName#)
        </isNotEmpty>
    </dynamic>
</select>
2 голосов
/ 25 июня 2010

Я бы попробовал это так:

<select id="getEmployees" parameterClass="java.util.HashMap" resultMap="empResultMap">
    <![CDATA[
    select * from users
    where userid=#userid#
    and gender = 'm'
    and (managerid IS NULL OR managerid <> #mgrid#)
    ]]>
    <dynamic prepend="AND">
        <isNotEmpty property="mgrid">
            (department = #mgrid#)
        </isNotEmpty>
    </dynamic>
</select>

Обратите внимание на исправление синтаксиса от "ISNULL" до "IS NULL".Удачи!

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