default-Parameter möglich?

E

etamas

hi,

habe das Problem, dass ich eine Methode mit vielen Parametern aufrufen muss.
Es geht um eine SQL-Abfrage, wo mir nicht immer alle Parameter bekannt sind.

zB:
select * from mitarbeiter where name = "Ludwig" and vorname = "Hans" and ...;
select * from mitarbeiter where name = "Ludwig";

wenn ich jetzt die Methode: sucheMitarbeiter() hab und es möglich ist die Methode mit sehr vielen Parametern aufzurufen (name, vorname, gebdatum, adresse, plz, wohnort, usw.), dann müsste ich die Methode sehr oft überladen, um alle möglichen Abfragen durchführen zu können.

Signatur von der Methode:
public void sucheMitarbeiter(String vorname, String nachname, String adresse, String plz, String gebdatum)

gibt es in java die Möglichkeit default-Werte (zb NULL) für die Parameter zu verwenden und einzelne Parameter explizit anzugeben?
zb: sucheMitarbeiter(adresse = wien) ... so in etwa, die anderen Parameter wären mit NULL-Werten gefüllt
und die Abfrage würde dann lauten:
select * from mitarbeiter where adresse = wien

grüsse, et
 
etamas schrieb:
Signatur von der Methode:
public void sucheMitarbeiter(String vorname, String nachname, String adresse, String plz, String gebdatum)

gibt es in java die Möglichkeit default-Werte (zb NULL) für die Parameter zu verwenden und einzelne Parameter explizit anzugeben?
zb: sucheMitarbeiter(adresse = wien) ... so in etwa, die anderen Parameter wären mit NULL-Werten gefüllt
und die Abfrage würde dann lauten:
select * from mitarbeiter where adresse = wien
Ich bin mir ziemlich sicher, dass das in Java nicht geht. Jedoch kann man solches in Python sehr schön lösen. Aber da du es ja in Java brauchst, ist Python keine Alternative (selbst Jython hilft da nichts ;)).

Aber du könntest deiner Funktion einfach ein Map-Object übergeben. Das kann man mit einem Array mit beliebigen Java-Objekten als Indizes vergleichen. Dort kannst du z.B. den String "adresse" als Key angeben und, wie in deinem Beispiel, "wien" als Value.
In der Funktion kannst du dann durch alle Einträge iterieren und dir den WHERE-Teil der Query zusammenbasteln.
Dokumentation gibts hier: java.util.Map
 
Zuletzt bearbeitet:

Ähnliche Themen

dovecot und postfix Konfiguration Problem

Windows clients können nicht mehr auf lange laufendes System zugreifen

CentOS 6.3 RADIUS - Keine Verbindung möglich

Squid als RPCoHTTPS Proxy für Outlook Anywhere

Mit bash mysql in Schleife abfragen

Zurück
Oben