2016-08-15 3 views
0

Ich benutze MongoRepository in meinem Dienst. In meinem Fall habe ich drei Felder, deren Namen "Name", "Alter" und "Geschlecht" sind. Ich konnte folgende Methoden in meiner Schnittstelle müssen die Daten abfragen:Ignoriere Parameter in getBy ****() Funktion in MongoRepository

List<People> getByName(String name); 
List<People> getByAge(String age); 
List<People> getByNameAndGender(String name, String gender); 
...and so on... 

Jetzt möchte ich mit jeder Kombination dieser drei Felder Daten abzufragen, also muss ich 7 (3 + 3 + 1) Methoden, die hier schreiben und es ist wirklich hässlich.

Ich habe versucht, so etwas wie

List<People> getByNameAndAgeAndGender(String name, String age, String gender); 

Und wenn der Eingang nur zwei Felder hat zu schreiben: name = Chris, Alter = 18, dann könnte ich nennen

List<People> peoples = getByNameAndAgeAndGender("Chris", "18", "*") 

die Liste der bekommen Leute, deren Name Chris ist und Alter ist 18. Wie kann ich dieses Ziel erreichen? Ich möchte wirklich kein großes "wenn ... anderes wenn ... anderes wenn ..." schreiben. Vielen Dank!

Antwort

1

Versuchen Sie folgendes:

List<People> getByNameLikeAndAgeLikeAndGenderLike(String name, String age, String gender); 
+0

Dank @TheKojuEffect! Es funktioniert für den Fall, dass einige Parameter fehlen. Aber alle Felder mit "Gefällt mir" können andere Probleme verursachen. Zum Beispiel: Wenn ich alle Leute bekommen möchte, die Chris anrufen und 18 Jahre alt sind, kann ein 18-jähriger, der Christian angerufen hat, auch in der Liste sein, weil Christian "wie" Chris ist. –

+0

Hey @KeLiu, in diesem Fall kam mir die Lösung in den Sinn, eine benutzerdefinierte Implementierung zu erstellen. Ich glaube nicht, dass dies mit der Methodennamenabfrage möglich ist. Alles Gute, – TheKojuEffect