Heim >Datenbank >MySQL-Tutorial >Wie übergebe ich eine Variablenparameterliste an das SQL-„IN'-Prädikat von JasperReports?
Übergabe einer Variablenparameterliste in JasperReports mithilfe des SQL-Prädikats „IN“
Bei der Arbeit mit JasperReports und dem SQL-Prädikat „IN“ ist dies der Fall ist erforderlich, um eine Parameterliste dynamisch an die Abfrage zu übergeben. In diesem Artikel wird gezeigt, wie Sie den Wert eines Parameters festlegen, der eine Liste ganzzahliger Werte in einem Java-Programm enthält.
Die folgende SQL-Abfrage erfordert eine Parameterliste „Rollen“, die einen oder mehrere ganzzahlige Werte enthält:
SELECT customer_name AS NAME, id_customer AS ID FROM customer WHERE customer_role IN ($P{roles})
Um den Wert des Parameters „roles“ in Java dynamisch festzulegen, verwenden Sie die von bereitgestellte Variable „$X“. JasperReports:
// Assume the "roles" parameter is a list of integers List<Integer> roles = ...; // Convert the list to a comma-separated string String roleString = roles.stream().map(String::valueOf).collect(Collectors.joining(",")); // Set the parameter value using the "$X" variable parameters.put("roles", "$X{IN,customer-role," + roleString + "}");
Mit der Syntax „$X{IN,column-name,parameter-name}“ können Sie die zu vergleichende Spalte, den Parameternamen und die Werteliste angeben.
Zum Beispiel würde die folgende Abfrage den Parameter „roles“ verwenden, um eine Spalte namens „customer_role“ zu filtern:
SELECT * FROM customer WHERE $X{IN,customer_role,roles}
Dies Mit der Lösung können Sie eine dynamische Parameterliste an das SQL-Prädikat „IN“ in JasperReports übergeben und so sicherstellen, dass die Abfrage die Daten basierend auf den bereitgestellten Werten korrekt filtert.
Das obige ist der detaillierte Inhalt vonWie übergebe ich eine Variablenparameterliste an das SQL-„IN'-Prädikat von JasperReports?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!