pureQuery는 메소드에 대한 입력 매개변수가 Bean 또는 Map인 경우에만 이 규칙을 준수합니다. 매개변수 표시문자의 name 부분의 앞에 : 또는 ?가 있으므로, pureQuery는 Bean 또는 Map에서 해당 특성 값을 찾을 때 매개변수 표시문자를 대소문자 구분 Java™ ID로 간주합니다.
ID가 Java에서만 사용될 때 pureQuery는 ID가 동일하도록 Java 규칙을 변경하지 않습니다. 또한 ID가 SQL에서만 사용되는 경우 pureQuery는 ID가 동일하도록 SQL의 규칙을 변경하지 않습니다.
예 1
이 예제에서 어노테이션이 있는 메소드는 Act라는 Bean을 입력 매개변수로 사용하고 데이터베이스에 대해 SELECT문을 실행합니다. SELECT문의 결과는 Bean의 특성 중 하나의 값으로 필터됩니다.
@Select(sql="select ACTNO, ACTKWD, ACTDESC from ACT where ACTNO = :actNo") Act getAct(Act a);
SELECT문을 실행할 때 pureQuery는 먼저 getActNo() 메소드에 대한 Bean을 검색합니다. 해당 Bean을 찾지 못하는 경우, pureQuery는 이름이 "actNo"인 특성을 찾습니다. 해당 필드를 찾지 못하는 경우, pureQuery는 String "actNo"를 Bean의 get(String) 메소드에 전달합니다(Bean이 이러한 메소드를 정의하는 경우).
일치하는 레코드에 해당하는 Act 오브젝트를 리턴할 때 pureQuery는 SQL 컬럼 레이블을 소문자로 지정합니다. 그런 다음 pureQuery는 Bean을 빌드합니다.
예 2
메소드가 Map을 입력 매개변수로 사용하고 Map 오브젝트의 List를 리턴한다고 가정하십시오.
@Select(sql="select ACTNO, ACTKWD, ACTDESC from ACT where ACTNO = :actNo") List<Map<String, Object>> getAct(Map<String, Object> a);
SELECT문을 실행할 때, pureQuery는 String "actNo"를 Map의 get(String) 메소드에 전달합니다. 일치하는 레코드에 해당하는 Map 오브젝트를 리턴할 때, pureQuery는 이를 각 Map 오브젝트 put() 메소드에 전달하기 전에 SQL컬럼 레이블을 소문자로 지정합니다.
예 3
다음 예제에서는 어노테이션이 있는 다른 메소드도 Act Bean을 입력 매개변수로 사용하고 데이터베이스에 대해 UPDATE문을 실행합니다. 명령문의 값은 Bean의 특성에서 유래합니다. 메소드는 갱신 계수를 리턴합니다.
@Update(sql="update ACT set ACTKWD = :actKwd, ACTDESC = :actDesc where ACTNO = :actNo") int updateAct(Act a);
UPDATE문을 실행할 때 pureQuery는 UPDATE문의 매개변수가 Bean의 get() 메소드의 이름, Bean의 특성 이름 및 get(String)과 일치하는지 차례로 검색합니다. 예를 들어, 이름이 actKwd인 매개변수의 경우, pureQuery는 먼저 getActKwd() 메소드에 대한 Bean을 검색합니다. 해당 Bean을 찾지 못하는 경우, pureQuery는 이름이 "actKwd"인 특성을 찾습니다. 해당 필드를 찾지 못하는 경우, pureQuery는 String "actKwd"를 Bean의 get(String) 메소드에 전달합니다(Bean이 이러한 메소드를 정의하는 경우).