Как написать несколько итеративных предложений IN в ibatis - PullRequest
0 голосов
/ 15 октября 2019

Я хочу написать оператор выбора примерно так, как показано ниже (упрощенная версия).

Select * from b_ship bse, s_detail sd, e_charge ec 
where sd.identifier='S' 
and bse.flag = 'Y' 
and bse.code in ('AF','PL','RW') 
and sd.product in ('P','B')
and ec.type in ('YZ','YX');

Я хочу сделать последние 3 столбца настраиваемыми. Я попробовал ниже для столбца bse.code. Ниже запроса возвращаем 5 строк. Это ожидаемый результат.

Select * from b_ship bse, s_detail sd, e_charge ec 
where sd.identifier='S' 
and bse.flag = #flag:CHAR#
and bse.code in < iterate property="checkpoint" open="(" close=")" conjunction="," > #checkpoint[]# < /iterate > 
and sd.product in ('P','B') 
and ec.type in ('YZ','YX')

Затем нужно настроить еще 2 столбца, например bse.code. Но возвращаемое значение равно 0. Ниже я попробовал:

Select * from b_ship bse, s_detail sd, e_charge ec 
where sd.identifier='S' 
and bse.flag = #flag:CHAR#
and bse.code in < iterate property="checkpoint" open="(" close=")" conjunction="," > #checkpoint[]# < /iterate> 
and sd.product in < iterate property="prodCode" open="(" close=")" conjunction="," > #prodCode[]# < /iterate> 
and ec.type in < iterate property="typeCode" open="(" close=")" conjunction="," > #typeCode[]# < /iterate>

Ниже приведен мой класс DAO:

List< String > checkpoint;
List< String > prodCode;
List< String > typeCode;

Map< String, Object > paramMap = new HashMap< String, Object >();
paramMap.put("flag",flag);
paramMap.put("checkpoint", checkpoint);
paramMap.put("prodCode", prodCode);
paramMap.put("typeCode", typeCode);         
List<ShipmentEvent> items = super.getSqlMapClient().queryForList("selectConfigurable", paramMap);

Ошибка не отображается, но результаты неверны. Я попытался найти решение, но никто не может решить. Я использую iBatis 2.3. Как написать несколько итераций, которые используют предложение IN в iBatis?

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