Метод отображения нескольких параметров iBatis - PullRequest
6 голосов
/ 27 мая 2010

Допустим, у меня есть запрос getUser с двумя параметрами - userName и password. Я бы хотел, чтобы метод картографирования выглядел так:

public UserBean getUser(String userName, String password);

Есть ли способ, которым я могу достичь чего-то подобного? Или, может быть, я должен передать в свой метод отображения карту параметров (и некоторые параметрыMap в моем картографе xml)?

public UserBean getUser(Map<String, Object> paramMap);

Я с нетерпением жду некоторых подсказок и объяснений.

Ответы [ 2 ]

9 голосов
/ 21 июня 2010

Без какой-либо специальной настройки вы можете ссылаться на первый и второй параметр как # {1} и # {2} соответственно.

Если вы хотите присвоить параметры именам, а не ссылаться на них в числовом формате, выполните следующие действия: В сопоставлении XML для вашего оператора SELECT задайте параметр parameterType = "map", а в файле интерфейса аннотируйте параметры с помощью @ Пары. Например, public UserBean getUser (@Param ("user_name" String userName, @Param ("password") String password); позволит вам ссылаться на имя пользователя и пароль в сопоставлении XML как # {user_name #} # {пароль} соответственно.

1 голос
/ 31 мая 2010

Вы не должны изменять сигнатуру вашего метода DAO, единственная проблема, которую стоит рассмотреть, - это как вы строите свое отображение. iBatis поддерживает только один входной параметр, и вы должны выбрать свой класс (атрибут parameterType), чтобы упаковать два исходных параметра в один.

В этом сценарии вы можете (среди других вариантов) поместить два параметра в Map (HashMap, обычно) или (если параметры соответствуют свойствам класса UserBean) передать фиктивную UserBean с этими двумя установленными свойствами.

В обоих случаях упаковка (создание HashMap или фиктивного UserBean, который содержит два параметра) будет выполняться внутри вашего public UserBean getUser(String userName, String password) метода.

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