PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : default-Parameter möglich?



etamas
08.01.2005, 11:48
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

thorus
08.01.2005, 19:42
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 (http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.htm)