Abfrage Ihrer Datenbank mit einem objektorientierten Ansatz

Automatisch übersetzt von Deepl

Nachdem ich Ihnen gezeigt habe , wie Sie Daten erstellen, aktualisieren und löschen können, folgt nun ein neuer Eintrag in der ORDA-Serie. In diesem Beitrag erfahren Sie, wie Sie Ihren Datenspeicher in einem objektorientierten Modus abfragen können. Mit ORDA sind die Abfragen leichter und lesbarer, und Sie können mit objektorientierten Konzepten durch das gesamte Datenmodell navigieren!

Darüber hinaus können Sie mit ORDA sehr einfach mehrere zusammenhängende Tabellen abfragen, rekursive Beziehungen auf derselben Tabelle verwalten und mehrere logische Operatoren in einer einzigen Abfrage verwenden. Außerdem müssen Sie sich nicht um die Festlegung von Beziehungen zwischen Tabellen kümmern … weder manuell noch automatisch!

Abfrage mit DataStore Beispiel

ERSTE SCHRITTE MIT ORDA-ABFRAGEN

Wie bei einer Abfrage über eine Tabelle, erfolgt die Abfrage mit ORDA über eine Datenklasse (die einer Tabelle entspricht).

Es gibt mehrere Möglichkeiten, eine Datenklasse abzufragen. Im Folgenden wird ein kurzer Überblick gegeben. Für tiefergehende Informationen über die query()-Methode finden Sie in der Dokumentation.

1- Geben Sie die Abfrage als einen einzigen String ein

Hier ist eine Abfrage, um alle Mitarbeiter zu finden, deren Vorname mit „S“ beginnt:

C_OBJECT($employees)
$employees :=ds.Employee.query("firstName='S@'"
) // Query on Employee table

2- Geben Sie die Abfrage und die Werte separat mit Platzhaltern an

Nehmen wir an, Sie möchten alle Mitarbeiter ermitteln, deren Vorname mit „D“ oder „E“ beginnt. Bitte beachten Sie, dass die anzuwendenden Werte in der Abfrage versetzt sind und mit :1, :2, … :n bezeichnet werden, wie unten gezeigt:

C_OBJECT($employees)
$employees :=ds.Employee.query("vorname=:1 oder vorname=:2"; "D@"; "E@"
) // Query on Employee table

Variante: Sie können auch Platzhalter durch eine Sammlung verwenden, um die Werte bereitzustellen. Wie das folgende Beispiel zeigt:

C_OBJECT($employees;$params)
// You can use a collection to provide values to apply in the query
$params:=New object
$params .parameters:=New collection("D@"; "E@")
$employees :=ds.Employee.query("vorname=:1 oder vorname=:2";$params) // Query on Employee table

einige Vorteile der neuen Art der Abfrage

EINFACHE VERWENDUNG EINES REKURSIVEN LINKS AUF EINE EINZELNE TABELLE

Betrachten Sie diesen rekursiven Link auf die Tabelle „Employee“:

Auf die klassische Weise

Dieser Code fragt alle Mitarbeiter ab, deren Vorname mit dem Buchstaben „A“ beginnt, wobei der Nachname des Managers mit dem Buchstaben „S“ beginnt:

ARRAY LONGINT(_managersIDs;0)
QUERY ([Employee];[Employee]firstName;"="; "A@")
CREATE SET ([Employee]; "a")
QUERY ([Employee];[Employee]lastName;"=";
"S@")
SELECTION TO ARRAY ([Mitarbeiter]ID;_managersIDs)
QUERY WITH ARRAY ([Mitarbeiter]managerID;_managersIDs)
CREATE SET ([Mitarbeiter]; "s")
INTERSECTION ("a"; "s"; "result")
USE SET ("result")
CLEAR SET ("a")CLEAR SET("s")

mit orda

Diese Abfrage ist viel leichter…

C_OBJECT($entitySelection)
$entitySelection := ds.Employee.query("vorname=:1 und manager.nachname=:2"; "A@"; "S@")

Warten Sie nicht … fangen Sie jetzt an, ORDA zu verwenden, um kürzeren, saubereren und besser lesbaren Code zu erhalten!

Avatar
- Product Owner - Marie-Sophie Landrieu-Yvert ist seit 2017 als Product Owner im 4D Produktteam tätig. Als Product Owner ist sie für das Schreiben der User Stories und deren Umsetzung in funktionale Spezifikationen zuständig. Ihre Aufgabe ist es auch, sicherzustellen, dass die Implementierung der Funktionen den Anforderungen des Kunden entspricht. Marie-Sophie ist Absolventin der ESIGELEC Ingenieurschule und begann ihre Karriere als Ingenieurin bei IBM im Jahr 1995. Sie nahm an verschiedenen Projekten teil (Wartungs- oder Build-Projekte) und arbeitete als Cobol-Entwicklerin. Dann arbeitete sie als UML-Designerin und Java-Entwicklerin. In letzter Zeit bestand ihre Hauptaufgabe darin, funktionale Anforderungen zu analysieren und zu schreiben sowie Geschäfts- und Entwicklungsteams zu koordinieren.