Maison >base de données >tutoriel mysql >Comment transmettre correctement les paramètres aux requêtes JasperReports en utilisant la syntaxe $P{} et $P!{} ?

Comment transmettre correctement les paramètres aux requêtes JasperReports en utilisant la syntaxe $P{} et $P!{} ?

DDD
DDDoriginal
2025-01-18 06:31:08684parcourir

How to Properly Pass Parameters to JasperReports Queries Using $P{} and $P!{} Syntax?

Paramètre de requête JasperReports passant

Dans les requêtes de base de données, il est courant de transférer dynamiquement des paramètres en fonction des entrées de l'utilisateur. Certains utilisateurs peuvent rencontrer des problèmes lors de la transmission de paramètres à l'aide de la syntaxe $P{}.

JasperReports fournit deux syntaxes pour référencer les paramètres : $P{} et $P!{}.

$P{paramName}Grammaire

$P{paramName} est principalement utilisé pour définir la valeur du paramètre d'entrée de la clause WHERE. L'algorithme de remplacement pour cette syntaxe est similaire à java.sql.PreparedStatement. Il gère intelligemment différents types de paramètres :

  • Pour les paramètres de type java.lang.String, le moteur remplace $P{parameterName} par une valeur citée.
  • Pour les paramètres de type java.lang.Integer, le moteur remplacera $P{parameterName} par une valeur numérique.

Exemple :

参数名称 参数类型 参数值
eventName java.lang.String Olympic Games
eventType java.lang.Integer 2

Expression originale :

<code class="language-sql">SELECT startDate, endDate, rating FROM events WHERE name=$P{eventName} AND type=$P{eventType}</code>

Résultat :

<code class="language-sql">SELECT startDate, endDate, rating FROM events WHERE name='Olympic Games' AND type=2</code>

$P!{paramName}Grammaire

La syntaxe

$P!{paramName} effectue une substitution simple, généralement utilisée pour remplacer la valeur exacte d'un argument.

Exemple :

参数名称 参数类型 参数值
tableName java.lang.String events
eventName java.lang.String Olympic Games
channel java.lang.String 'BBC'
type java.lang.String sport

Expression originale :

<code class="language-sql">SELECT startDate, endDate, rating FROM $P!{tableName} WHERE name='$P!{eventName}' AND channel=$P!{channel} AND type=$P!{type}</code>

Résultat :

<code class="language-sql">SELECT startDate, endDate, rating FROM events WHERE name='Olympic Games' AND channel='BBC' AND type=sport</code>

Postuler à la question

Pour la requête donnée, les expressions suivantes peuvent s'appliquer :

  • Si $P{key} est java.lang.String tapez le paramètre :
<code class="language-sql">SELECT name, phone, email FROM company WHERE $P!{clause} = $P{key} ORDER BY $P!{order}</code>
  • Si $P{key} est un paramètre de type non-chaîne :
<code class="language-sql">SELECT name, phone, email FROM company WHERE $P!{clause} = $P!{key} ORDER BY $P!{order}</code>

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn