Ich verwende QueryDSL mit SpringData.
Ich habe Tabelle sagen, Employee
und ich habe Entitätsklasse say, EmployeeEntity
erstellt
Ich habe folgende Service Methode
Wie oben habe ich das NPException
kommentiert. Wie verwende ich QueryDSL für optionale Parameter in QueryDSL mit Spring Data?
Danke:)
BooleanBuilder
kann als dynamischer Builder für boolesche Ausdrücke verwendet werden:
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
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:
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.
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:
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 .
Tags und Links java spring-data querydsl