Скажем, у меня есть запрос getUser
с двумя параметрами - имя пользователя и пароль. Я хотел бы иметь метод картопостроителя, бывший похожий на это:
public UserBean getUser(String userName, String password);
Есть ли какой-либо способ, которым я могу достигнуть чего-то как этот? Или возможно я должен передать в своей карте метода картопостроителя параметров (и некоторый parameterMap в моем xml картопостроителе)?
public UserBean getUser(Map<String, Object> paramMap);
Я ожидаю к некоторым подсказкам и объяснениям.
Без какой-либо специальной конфигурации вы можете ссылаться на первый и второй параметр как на # {1} и # {2} соответственно.
Если вы хотите назвать параметры, а не ссылаться на них в цифрах, сделайте следующее: В отображении XML для вашего оператора SELECT установите параметр parameterType = "map", а в файле интерфейса аннотируйте параметры с помощью @ Param. Например, общедоступный UserBean getUser (@Param ("user_name" String userName, @Param ("password") String password); позволит вам ссылаться на имя пользователя и пароль в сопоставлении XML как # {user_name #} и # {пароль} соответственно.
Вы не должны менять сигнатуру вашего метода DAO, единственный вопрос, который нужно рассмотреть, это то, как вы строите ваше отображение. iBatis поддерживает только один входной параметр, и вы должны решить ваш класс (атрибут parameterType
), чтобы упаковать ваши два исходных параметра в один.
В этом сценарии вы можете (среди прочих вариантов) поместить два параметра в Map
(HashMap
, обычно), или (если параметры соответствуют свойствам класса UserBean
) передать фиктивный UserBean
с установленными этими двумя свойствами.
В обоих случаях упаковка (создание HashMap или фиктивного UserBean, содержащего эти два параметра) будет выполнена внутри вашего метода public UserBean getUser(String userName, String password)
.