Handle optionale Parameter in QueryDSL

7

Ich verwende QueryDSL mit SpringData. Ich habe Tabelle sagen, Employee und ich habe Entitätsklasse say, EmployeeEntity erstellt Ich habe folgende Service Methode

geschrieben %Vor%

Wie oben habe ich das NPException kommentiert. Wie verwende ich QueryDSL für optionale Parameter in QueryDSL mit Spring Data?

Danke:)

    
Prashant Shilimkar 20.05.2014, 03:24
quelle

5 Antworten

21

BooleanBuilder kann als dynamischer Builder für boolesche Ausdrücke verwendet werden:

%Vor%     
Timo Westkämper 27.05.2014, 18:17
quelle
4

BooleanBuilder ist gut. Sie können sie auch umschließen und "optionale" Methoden hinzufügen, um die if-Bedingungen zu umgehen:

Beispielsweise können Sie für "und" schreiben: (Java 8 Lambdas werden verwendet)

%Vor%

Und dann wäre die Verwendung viel sauberer:

%Vor%

Es ist auch möglich, die optionale Klasse von jdk zu verwenden

    
aviad 02.11.2015 15:20
quelle
2

Das ist eigentlich Java 101: Suche nach null und initialisiere die Abfrage, anstatt Prädikate zu verketten. Also könnte eine Hilfsmethode wie diese den Trick machen:

%Vor%

Dann können Sie einfach tun:

%Vor%

Beachten Sie, dass ich createOrAnd(…) selbst in der ersten Klausel nur aus Gründen der Konsistenz verwende und diesen Code nicht anpassen muss, falls Sie sich entscheiden, eine neue Klausel noch vor der für firstName hinzuzufügen.

    
Oliver Gierke 20.05.2014 07:03
quelle
0

Basis auf was Sie brauchen, würde ich dies tun

%Vor%

Zunächst sollten Sie eine List von EmployeeEntity zurückgeben. Zweitens ist es besser, optional zu verwenden, als zu überprüfen, ob null ist, und Sie können die Optional -Werte von Java 8 übergeben, die von optionalen RequestParam wie folgt erhalten wurden:

%Vor%

Und eine sehr wichtige Sache ist es, die containsIgnoreCase -Funktion im Prädikat zu verwenden: es ist besser als eine typische like , weil es die Groß- / Kleinschreibung nicht berücksichtigt.

Meiner Meinung nach sollten Sie einen solchen Ansatz verwenden:

%Vor%

schau es dir hier an .

    
EliuX 25.09.2015 15:54
quelle
0

, wenn Sie die QueryDSL-Implementierung von null :

überprüfen %Vor%

was angeblich das ist, was Sie wollen.

    
ameen 25.05.2014 20:15
quelle

Tags und Links