>>-@Select--(--sql--=--"--SQL-statement--"--)-------------------> >--+--------------------------------------------------------------------------------------+--> '-@Handler--(--+-parameterHandler--=--class-name----------------------------------+--)-' +-resultHandler--=--class-name-------------------------------------+ +-resultHandler--=--class-name--,--parameterHandler--=--class-name-+ +-rowHandler--=--class-name----------------------------------------+ '-rowHandler--=--class-name--,--parameterHandler--=--class-name----' >--modifiers--return-type--method-name--(--+------------------------------------+--);->< | .-,------------------------------. | | V | | '---parameter-type--parameter-name-+-'
구문 다이어그램에서 사용되는 규칙을 이해하려면 구문 다이어그램 읽는 방법을 참조하십시오.
return-type: >>-+-Iterator<T>--------+-------------------------------------->< +-List<T>------------+ +-Map<String,Object>-+ +-T------------------+ '-T[]----------------'
두 번째 테이블에서는 메모리의 콜렉션을 쿼리하는 어노테이션이 있는 메소드에 대한 가능한 리턴 유형에 대해 설명합니다.
약어 | 의미 |
---|---|
I | Iterator |
L | List |
M | Map |
O | Object |
S | String |
T | 기본 Java 유형 또는 Bean의 랩퍼 클래스일 수 있는 일반 클래스 |
I<M<S,O>> | I<T> | L<M<S,O>> | L<T> | M<S,O> | M<S,O>[] | <T> | |
---|---|---|---|---|---|---|---|
@Select | X | X | X | X | X | X | X |
어노테이션이 있는 메소드를 사용하는 경우, @Select가 기본 Java 유형이나 기본 Java 유형의 Array, List 또는 Iterator를 리턴하도록 지정하지 마십시오.
SQL에서 쿼리된 정보가 기본 Java 유형으로 저장될 때마다 SQL 널(NULL) 값과 관련된 정보는 유실됩니다. 또한, Java에서는 <기본 Java 유형>.class의 일반 <T> 클래스를 지정하는 일반 메소드가 해당 기본 Java 유형에 적절한 랩퍼 클래스의 인스턴스를 리턴해야 합니다.
int tCount = myGenericMethod( int.class );여기서 myGenericMethod의 정의는 다음과 같습니다.
<T> T myGenericMethod( Class<T> cl );
Integer tCount = myQuery.myGenericMethod( Integer.class );
각 요소가 행에 해당하는 Iterator 오브젝트가 리턴되도록 지정합니다. 매개변수화된 유형 T를 지정해야 합니다.
pureQuery의 Iterator 유형은 ResultIterator입니다. Iterator 사용 완료 후 ResultIterator.close() 메소드를 사용하여 Iterator를 닫아야 합니다.
스칼라 또는 Bean이 리턴되도록 지정합니다. 스칼라는 Double 또는 String, Date 또는 Timestamp와 같은 랩퍼일 수 있습니다.
둘 이상의 행이 쿼리의 결과로 규정되는 경우, 첫 번째 행의 값이 리턴됩니다.
이러한 매개변수는 아래 규칙에 따라 SQL문에 지정된 매개변수 표시문자와 일치합니다. 이러한 매개변수는 스칼라 유형, Bean 클래스 또는 Map 오브젝트일 수 있습니다. SQL이 매개변수 참조에 대해 :name 표기를 사용하는 경우, 첫 번째 매개변수 유형은 Bean 또는 Map이어야 합니다. Bean 또는 Map 오브젝트의 특성 이름은 SQL 문자열의 :name 어컨런스와 일치를 위해 사용됩니다.
pureQuery가 메모리의 콜렉션에 대한 쿼리로 해당 SELECT문을 식별할 수 있도록 Iterator, Array 또는 반복 가능 List인 매개변수가 하나 이상 필요합니다. 메모리의 Java 콜렉션에 대한 쿼리의 FROM절의 매개변수 표시문자에 설명된 구문을 사용하여 SELECT문의 FROM절에서 이 매개변수를 참조하십시오.
SQL이 매개변수 표시문자에 대해 ? 표기를 사용하는 경우, 스칼라 값만 제공할 수 있습니다.
?n 표기를 사용하는 경우, 해당 매개변수는 스칼라 유형이어야 합니다(매개변수가 FROM절에 있는 경우는 제외하며 이 경우 해당 매개변수는 콜렉션 또는 Array 오브젝트여야 함).
?n.name 표기를 사용하는 경우, 해당 매개변수는 Bean 클래스 또는 Map 오브젝트여야 합니다. ?n 및 ?n.name 표기는 단일 쿼리에서는 혼합될 수 있지만 독립형 ? 매개변수 표시문자에 대해서는 혼합될 수 없습니다.