Lors de la création de requêtes dans JasperReports, vous devrez peut-être transmettre des paramètres dynamiques de l'utilisateur. A cet effet, il existe deux expressions syntaxiques pour les références de paramètres : $P{}
et $P!{}
.
$P{}
Grammaire$P{}
est principalement utilisée pour définir les valeurs des paramètres d'entrée dans la clause WHERE. Il utilise un algorithme de remplacement « intelligent » similaire à java.sql.PreparedStatement
. Par exemple, les paramètres java.lang.String
seront remplacés par des valeurs entre guillemets et les paramètres java.lang.Integer
seront remplacés par des valeurs numériques.
Par exemple, considérons les paramètres suivants :
参数名称 | 参数类型 | 参数值 |
---|---|---|
eventName | java.lang.String | Olympic Games |
eventType | java.lang.Integer | 2 |
Expression originale (à remplacer) :
<code class="language-sql">SELECT startDate, endDate, rating FROM events WHERE name=$P{eventName} AND type=$P{eventType}</code>
Le résultat sera :
<code class="language-sql">SELECT startDate, endDate, rating FROM events WHERE name='Olympic Games' AND type=2</code>
$P!{}
Grammaire$P!{}
est principalement utilisée pour les substitutions simples. Il remplace textuellement les valeurs des paramètres, sans aucun traitement particulier.
Par exemple, considérons les paramètres suivants :
参数名称 | 参数类型 | 参数值 |
---|---|---|
tableName | java.lang.String | events |
eventName | java.lang.String | Olympic Games |
Expression originale (à remplacer) :
<code class="language-sql">SELECT startDate, endDate, rating FROM $P!{tableName} WHERE name='$P!{eventName}'</code>
Le résultat sera :
<code class="language-sql">SELECT startDate, endDate, rating FROM events WHERE name='Olympic Games'</code>
Selon votre question, vous devez définir dynamiquement les clauses WHERE et ORDER BY, vous pouvez utiliser l'expression suivante :
<code class="language-sql">SELECT name, phone, email FROM company WHERE $P!{clause} = $P{key} ORDER BY $P!{order}</code>
où $P{key}
est un paramètre java.lang.String
. Si la valeur $P!{clause}
nécessite une valeur entre guillemets, vous pouvez utiliser l'expression suivante à la place :
<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!