2010-05-26 3 views
6

사용자 이름과 암호의 두 가지 매개 변수가있는 getUser 쿼리가 있다고 가정 해 봅니다. 다음과 같은 매퍼 방법을 사용하고 싶습니다.iBatis 다중 매개 변수 매퍼 메서드

public UserBean getUser(String userName, String password); 

그런 식으로 달성 할 수있는 방법이 있습니까? 아니면 매개 변수 (및 내 xml 매퍼의 일부 parameterMap) 내 매퍼 메서드 맵을 전달해야합니까?

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

저는 약간의 힌트와 설명을 기다리고 있습니다.

답변

9

특별한 구성없이 첫 번째 및 두 번째 매개 변수를 각각 # {1} 및 # 2 (으)로 참조 할 수 있습니다.

매개 변수의 이름을 수치로 나타내지 않고 다음과 같이 지정하려면 다음을 수행하십시오. SELECT 문의 XML 매핑에서 parameterType = "map"을 설정하고 인터페이스 파일에 매개 변수에 주석을 추가하십시오 @Param. 예를 들어, 공용 UserBean getUser (@Param ("user_name"String userName, @Param ("password") 문자열 암호); # {user_name #} 및 XML 매핑의 사용자 이름과 암호를 참조 할 수 있습니다. # {password}, ​​

+0

빙고! 그게 내가 봤는데 :) 감사합니다 :) 완벽하게 작동 :) – jjczopek

1

DAO 메서드의 서명을 변경해서는 안되는 유일한 고려 사항은 매핑 작성 방법입니다. iBatis는 단 하나의 입력 매개 변수만을 지원하므로 클래스 (속성 parameterType)를 선택하여 두 개의 원래 매개 변수를 하나로 묶어야합니다. 이 시나리오에서는

당신이 수도 (일반적으로, HashMap)를 Map에 두 개의 매개 변수를 배치 (다른 옵션들), 또는 (매개 변수가 UserBean 클래스의 속성에 해당하는 경우) 설정이 두 특성을 가진 더미 UserBean를 전달합니다.

두 경우 모두 패킹 (두 개의 매개 변수를 포함하는 HashMap 또는 더미 UserBean 작성)은 public UserBean getUser(String userName, String password) 메서드 내에서 수행됩니다.

+0

답장을 보내 주셔서 감사합니다. DAO 방법을 변경할 필요가 없습니다. 일반적으로 iBatis가 매퍼 인터페이스 메소드에서 여러 매개 변수를 지원하는지 알고 싶습니다. – jjczopek