Многометральный метод mapper ibatis
Вопрос
Скажем, у меня есть запрос getUser
С двумя параметрами - имя пользователя и пароль. Я хотел бы иметь метод Mapper, который выглядит так:
public UserBean getUser(String userName, String password);
Есть ли способ, которым я могу добиться чего-то подобного? Или, может быть, я должен пройти в моем Mapper Method Map Paraments (и какой-то параметр в моем XML Mapper)?
public UserBean getUser(Map<String, Object> paramMap);
Я с нетерпением жду некоторых намеков и объяснений.
Решение
Без какой-либо особой конфигурации вы можете обратиться к первому и второму параметру как # {1} и # {2} соответственно.
Если вы хотите назвать параметры, вместо того, чтобы ссылаться на них численно, выполните следующие действия: в отображении XML для вашего выбора оператора SELECT, установите PARMETYPEER = «MAP», а в файле интерфейса, аннотируйте параметры с @param. Например, Public UserBean GetUser (@param ("user_name" String username, @param ("пароль") Строковый пароль); позволит вам обратиться к именному имени пользователя и паролю, в сопоставлении XML, как # {user_name #} и # {пароль} соответственно.
Другие советы
Вы не должны изменить подпись вашего метода DAO, единственным вопросом, который необходимо учитывать, - это то, как вы создаете свое сопоставление. IBATIS поддерживает только один входной параметр, и вы должны решить ваш класс (атрибут parameterType
) Чтобы упаковать свои два оригинальных параметра в один.
В этом сценарии вы можете (среди других вариантов) разместите два параметра в Map
(HashMap
, Как правило,) или (если параметры соответствуют свойствам UserBean
класс) пройти манекен UserBean
с этими двумя свойствами.
В обоих случаях упаковка (построение HASHMAP или фиктивное USERBUS, которое удерживает два параметра), будет выполняться в вашем public UserBean getUser(String userName, String password)
метод.