>>-@Select--(--sql--=--"--SQL-Anweisung--"--)-------------------> >--+----------------------------------------------------------------------------------------+--> '-@Handler--(--+-parameterHandler--=--Klassenname-----------------------------------+--)-' +-resultHandler--=--Klassenname--------------------------------------+ +-resultHandler--=--Klassenname--,--parameterHandler--=--Klassenname-+ +-rowHandler--=--Klassenname-----------------------------------------+ '-rowHandler--=--Klassenname--,--parameterHandler--=--Klassenname----' >--Modifikatoren--Rückgabetyp--Name_der_Methode--(--+---------------------------------+--);->< | .-,---------------------------. | | V | | '---Parametertyp--Parametername-+-'
Eine Beschreibung der in diesem Syntaxdiagramm verwendeten Konventionen finden Sie in Informationen zum Lesen von Syntaxdiagrammen.
Rückgabetyp: >>-+-Iterator<T>--------+-------------------------------------->< +-List<T>------------+ +-Map<String,Object>-+ +-T------------------+ '-T[]----------------'
In der zweiten Tabelle werden die möglichen Rückgabetypen für mit Annotationen versehene Methoden angezeigt, die speicherinterne Objektgruppen abfragen.
Abkürzung | Bedeutung |
---|---|
I | Iterator |
L | List |
M | Map |
O | Object |
S | String |
T | Generische Klasse, die eine Wrapperklasse für einen Java-Basiselementtyp oder eine Bean sein kann |
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 |
Wenn Sie eine mit Annotationen versehene Methode verwenden, geben Sie nicht an, dass @Select einen Java-Basiselementtyp oder ein Array, eine Liste oder einen Iterator eines Java-Basiselementtyps zurückgibt.
Die Informationen hinsichtlich SQL-Nullwerten gehen verloren, wenn aus SQL abgefragte Informationen in einem Java-Basiselementtyp gespeichert werden. Außerdem erfordert Java, dass eine generische Methode, die eine generische Klasse <T> von <Java-Basiselementtyp>.class angibt, eine Instanz der Wrapperklasse zurückgeben muss, die für den Java-Basiselementtyp geeignet ist.
int tCount = myGenericMethod( int.class );, wobei Folgendes die Definition von myGenericMethod ist:
<T> T myGenericMethod( Class<T> cl );
Integer tCount = myQuery.myGenericMethod( Integer.class );
Gibt an, dass ein Objekt Iterator zurückgegeben wird, wobei jedes Element einer Zeile entspricht. Der parametrisierte Typ T muss angegeben werden.
Iteratoren in pureQuery weisen den Typ ResultIterator auf. Sie müssen Iteratoren mit der Methode ResultIterator.close() schließen, wenn Sie sie nicht mehr verwenden.
Gibt an, dass ein Skalar oder eine Bean zurückgegeben wird. Ein Skalar könnte ein Wrapper wie z. B. Double sein oder ein Typ String (Zeichenfolge), Date (Datum) oder Timestamp (Zeitmarke).
Wenn mehrere Zeilen als Ergebnis der Abfrage zutreffen, wird der Wert aus der ersten Zeile zurückgegeben.
Diese Parameter werden mit den in der SQL-Anweisung angegebenen Parametermarken entsprechend der nachstehenden Regeln abgeglichen. Diese Parameter können Skalartypen, Bean-Klassen oder Map-Objekte sein. Wenn das SQL die Notation :Name für Parameterverweise verwendet, muss der erste Parametertyp eine Bean oder Map sein. Die Eigenschaftsnamen vom Bean- oder Map-Objekt werden für den Abgleich mit den Vorkommen von :Name in der SQL-Zeichenfolge verwendet.
Mindestens ein Parameter, der ein Iterator, ein Array oder eine iterierbare Liste ist, ist erforderlich, damit pureQuery die entsprechende Anweisung SELECT als Abfrage für eine speicherinterne Objektgruppe angeben kann. Referenzieren Sie diesen Parameter in der Klausel FROM der Anweisung SELECT, indem Sie die Syntax verwenden, die in Parametermarken in Klausel FROM von Abfragen über speicherinterne Java-Objektgruppen beschrieben ist.
Wenn das SQL die Notation mit ? für Parametermarken verwendet, können Sie nur skalare Werte angeben.
Wenn Sie die Notation ?n verwenden, müssen die entsprechenden Parameter Skalartypen sein (außer sie befinden sich in der Klausel FROM; in diesem Fall müssen sie Objektgruppen oder Array-Objekte sein).
Wenn Sie die Notation ?n.Name verwenden, müssen die entsprechenden Parameter Bean-Klassen oder Map-Objekte sein. Die Notationen ?n und ?n.Name können in einer einzelnen Abfrage gemischt sein, können aber nicht mit eigenständigen Parametermarken ? gemischt werden.