Gekapselte Queries |
Anfang Zurück Vor |
Letzte Änderung 13.02.2014
Für Einsteiger ist es anfangs einfacher, Datenbankabfragen direkt in einem GUI-Ereignis zu formulieren, z.B. eine Suchanfrage in einem Button-Klick-Ereignis actionPerformed.
Wird die hier implementierte Abfrage zu einem späteren Zeitpunkt an mehreren Stellen des Programms benötigt, muss diese mehrmals implementiert und im Falle einer Änderung an vielen Stellen des Programms editiert werden. Das ist nicht nur zeitaufwändig, sondern erhöht das Fehlerrisiko erheblich. Deshalb sollten Sie Ihre Abfragen vom GUI-Code trennen, indem Sie Ihre Queries in separaten Klassen auslagern. Im GUI-Code muss dann nicht mehr der komplette Abfragecode hinterlegt werden, sondern nur noch eine Methode, mit der die Query aufgerufen wird, z.B. Fahrzeuge.VT.showAll( ). Der Abfragecode muss dagegen nur noch an einer einzigen Stelle, nämlich in der Query-Klasse, implementiert und bei Bedarf angepasst werden.
Eine mögliche Variante um eine Query auszulagern ist, diese direkt bei der jeweiligen Virtuellen Tabelle zu hinterlegen. Das hat den Vorteil, dass die Query-Methode zum Aufrufen der Query dann sehr gut lesbar ist, z.B. Fahrzeuge.VT.showAll( ), und zudem in der Autovervollständigung zusammen mit den anderen Methoden der Virtuellen Tabelle aufgelistet wird. Die zweite Möglichkeit ist, die Query in eine völlig eigenständige Klasse auszulagern, was ab einer bestimmten Anzahl von Queries empfehlenswert ist.
In XDEV 5 werden die in Klassen ausgelagerten Queries mit der Annotation @SQLQuery gekennzeichnet und können damit im Fenster Queries, das Sie über das Menü Fenster > Code-Editor > Queries aufrufen können, automatisch aufgelistet werden.
1.Wählen Sie im Menü Ansicht > Fenster > Queries, um das Übersichtsfenster für Queries zu öffnen. 2.Klicken Sie auf , um eine neue Query anzulegen. 3.Wählen Sie im folgenden Assistenten bei Bereits vorhandene Klasse > Virtuelle Tabellen > Fahrzeuge aus und klicken Sie auf OK. 4.Geben Sie bei Methodenname den Namen der Methode an, mit der sich die Abfrage später aufrufen lassen soll, z.B. showAll und klicken Sie auf OK. 5.Fügen Sie die Anweisung XDEV.Query in die generierte Methode showAll( ) ein, um die eigentliche Abfrage mit Hilfe des Query-Assistenten zu konstruieren.
6.Selektieren Sie im folgenden Query-Assistenten die Datenbank-Tabelle Fahrzeuge, übernehmen Sie bei Ziel (Virtuelle Tabelle) die vorgeschlagene Virtuelle Tabelle Fahrzeuge und klicken Sie auf OK.
1.Wählen Sie im Menü Ansicht > Fenster > Queries, um das Übersichtsfenster für Queries zu öffnen. 2.Klicken Sie auf , um eine neue Query anzulegen. 3.Wählen Sie im folgenden Assistenten Neue Klasse anlegen, geben Sie bei Name den Namen für die Klasse an, z.B. FahrzeugeQueries, wählen Sie bei Ordner > Queries und klicken Sie auf OK. 4.Geben Sie im folgenden Assistenten bei Methodenname den Namen der Methode an, mit der sich die Abfrage später aufrufen lassen soll, z.B. showAll und klicken Sie auf OK. 5.Fügen Sie die Anweisung XDEV.Query in die generierte Methode QueryAll( ) ein, um die eigentliche Abfrage mit Hilfe des Query-Assistenten zu konstruieren.
7.Selektieren Sie im folgenden Query-Assistenten die Datenbank-Tabelle Fahrzeuge, übernehmen Sie bei Ziel (Virtuelle Tabelle) die vorgeschlagene Virtuelle Tabelle Fahrzeuge und klicken Sie auf OK.
Alle Werte die Sie für eine Abfragebedingung (WHERE) und SQL Funktionen (Group By, Order By etc.) benötigen, müssen vor dem Aufruf der Query-Methode als Variable oder Objekt zur Verfügung stehen, sodass Sie diese anschließend der Query-Methode als Parameter übergeben können.
Im Methoden-Assistent bei Parameter können Sie dann alle Parameter übergeben die Ihre Abfrage benötigt. Klicken Sie dazu auf Neu, wählen Sie bei Typ den Variablennamen aus, z.B. String und geben dann bei Name den Variablennamen an, z.B. hersteller. Auch Objekte lassen sich übergeben.
Im Query-Assistenten können die übergebenen Parameter hersteller und modelle für die Abfragebedingung verwendet werden.
Generierter Code:
Die in der Virtuellen Tabelle Fahrzeuge oder in der eigenständigen Klasse FahrzeugeQueries hinterlegte Query kann nun an jeder beliebigen Programmstelle per Methodenaufruf aufgerufen werden.
1.Wechseln Sie in den GUI-Builder, fügen Sie einen Button in die Arbeitsfläche ein und vergeben Sie diesen ein Maus-Klick-Event actionPerformed.
2.Wählen Sie im Menü Fenster > Code-Editor > Queries, um das Fenster Queries zu öffnen. 3.Ziehen Sie Ihre Query-Methode, z.B. showAll( ), mit Drag&Drop in den Code-Editor.
Query-Methoden lassen sich im Fenster Queries thematisch gruppieren. Bereits beim Anlegen einer Query-Methode können Sie im Methoden-Assistent bei Gruppe (optional) einen Gruppennamen angeben. Die Gruppierung erfolgt hier jedoch nicht wie im Projektmanagement mit Ordnern, sondern wird mit Hilfe der Annotation group erreicht, die direkt im Code bei der Query-Methode angegeben wird. Der Gruppenname wird als Zeichenkette angegeben. Um eine Query-Methode einer anderen Gruppe zuzuweisen, müssen Sie lediglich den Gruppennamen bei der Annotation group ändern und anschließend speichern.
●Query-Methode der Gruppe "Detailsuche"
Aus Detailsuche ...
●Query-Methode der Gruppe "Schnellsuche"
wird Schnellsuche.
|