Maison >base de données >tutoriel mysql >Comment transmettre une liste de paramètres variables au prédicat SQL « IN » de JasperReports ?
Passer une liste de paramètres de variables dans JasperReports à l'aide du prédicat SQL "IN"
Lorsque vous travaillez avec JasperReports et le prédicat SQL "IN", il est nécessaire pour transmettre dynamiquement une liste de paramètres à la requête. Cet article montre comment définir la valeur d'un paramètre contenant une liste de valeurs entières dans un programme Java.
La requête SQL ci-dessous nécessite une liste de paramètres "rôles" contenant une ou plusieurs valeurs entières :
SELECT customer_name AS NAME, id_customer AS ID FROM customer WHERE customer_role IN ($P{roles})
Pour définir dynamiquement la valeur du paramètre "rôles" en Java, utilisez la variable "$X" fournie par 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 + "}");
L'utilisation de la syntaxe "$X{IN,column-name,parameter-name}" vous permet de spécifier la colonne à comparer, le nom du paramètre et la liste de valeurs.
Par exemple, la requête suivante utiliserait le paramètre « rôles » pour filtrer une colonne appelée « rôle_client » :
SELECT * FROM customer WHERE $X{IN,customer_role,roles}
Cette solution vous permet de transmettre une liste de paramètres dynamiques au prédicat SQL "IN" dans JasperReports, garantissant que la requête filtre correctement les données en fonction des valeurs fournies.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!