| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > нет OUT параметра при вызове PLSQL через mybatis |
| Автор: Tasadar 19.10.2011, 10:50 | ||||||||||||||
| Пишу программу на Java, с использованием Spring 3.0.5 и MyBatis (http://code.google.com/p/mybatis/wiki/Spring для работы с БД Oracle). Код интерфейса для MyBatis:
"canCustomerSubscribe" из xml файла MyBatis:
код который вызывает "canCustomerSubscribe":
Если вызвать процедуру wallet.pkg_wallet_validation.can_customer_subscribe с инвалидным msisdn в БД через PL/SQL Developer, процедура возвращает 1001. Когда я вызываю метод "subscribe" с инвалидным msisdn, я не могу получить этот код, а вместо этого получаю начальное значение "Integer responseCode = 0;", т.е. получаю то, что отправил. Включил debug для MyBatis и перенаправил его в stdout. Вот, что я получаю:
Если в методе subscribe написать "Integer responseCode = null", то получаю ошибку:
Замечу, что другие запросы работают. Получение OUT результата из PLSQL процедуры тоже работает, если в xml файле вместо parameterMap передать класс. Например этот код из тестового проекта работает:
У класса "Subscriber" есть поля "msisdn" и "status". Но в моем случае, я не хочу передавать класс, т.к. responseCode это результат выполнения процедуры, а не свойство класса. Пожалуйста, помогите получить OUT параметр процедуры через MyBatis. |
| Автор: Ares4322 19.10.2011, 14:02 |
| Вы должны в canCustomerSubscribe передавать не 2 параметра, а один типа Map<String,Object>. Ключи этой map будут как раз "msisdn" и "responseCode", если соответствовать вашему коду. В mybais в методыах мапперов может быть один параметр. Если надо передавать несколько, то надо передавать map или Pojo |
| Автор: Tasadar 20.10.2011, 09:57 |
| Ares4322, спасибо. Вариант с Map<String,Object> прошел. |