SQL문을 실행하고 Bean 또는 Map오브젝트를 빌드할 때 pureQuery가 Java 및 SQL ID의 대소문자를 사용하는 방법

어노테이션이 있는 메소드 또는 인라인 메소드의 Bean 또는 Map 오브젝트를 사용하여 WHERE절의 매개변수에 값을 전달하는 경우 그리고 pureQuery가 쿼리 결과를 포함하도록 Bean 또는 Map을 구성하는 경우, pureQuery는 매개변수 표시문자 및 SQL 컬럼의 대소문자와 관련된 규칙을 따릅니다.
  1. 어노테이션이 있는 메소드 또는 인라인 메소드의 Bean 또는 Map 오브젝트를 사용하여 SQL문의 매개변수에 값을 전달할 때, pureQuery는 명령문에 있는 매개변수 표시문자의 이름 부분의 대소문자를 변경하지 않습니다.

    pureQuery는 메소드에 대한 입력 매개변수가 Bean 또는 Map인 경우에만 이 규칙을 준수합니다. 매개변수 표시문자의 name 부분의 앞에 : 또는 ?가 있으므로, pureQuery는 Bean 또는 Map에서 해당 등록 정보 값을 찾을 때 매개변수 표시문자를 대소문자 구분 Java™ ID로 간주합니다.

  2. pureQuery는 쿼리 결과에서 Bean 또는 Map을 구성할 때 SQL 컬럼의 레이블을 소문자로 변환합니다. 리턴 유형이 Bean인 경우, pureQuery는 Bean을 빌드합니다. 리턴 유형이 Map 또는 Map 오브젝트의 콜렉션인 경우, pureQuery는 각 Mapput() 메소드에 소문자 레이블을 전달합니다.

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"를 Mapget(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이 이러한 메소드를 정의하는 경우).


피드백