Beim Erstellen von Abfragen in JasperReports müssen Sie möglicherweise dynamische Parameter vom Benutzer übergeben. Zu diesem Zweck gibt es zwei Syntaxausdrücke für Parameterreferenzen: $P{}
und $P!{}
.
$P{}
Grammatik$P{}
-Syntax wird hauptsächlich zum Festlegen von Eingabeparameterwerten in der WHERE-Klausel verwendet. Es verwendet einen „intelligenten“ Ersetzungsalgorithmus ähnlich wie java.sql.PreparedStatement
. Beispielsweise werden java.lang.String
-Parameter durch Werte in Anführungszeichen ersetzt und java.lang.Integer
-Parameter durch numerische Werte.
Berücksichtigen Sie beispielsweise die folgenden Parameter:
参数名称 | 参数类型 | 参数值 |
---|---|---|
eventName | java.lang.String | Olympic Games |
eventType | java.lang.Integer | 2 |
Ursprünglicher Ausdruck (zu ersetzen):
<code class="language-sql">SELECT startDate, endDate, rating FROM events WHERE name=$P{eventName} AND type=$P{eventType}</code>
Das Ergebnis wird sein:
<code class="language-sql">SELECT startDate, endDate, rating FROM events WHERE name='Olympic Games' AND type=2</code>
$P!{}
Grammatik$P!{}
-Syntax wird hauptsächlich für einfache Ersetzungen verwendet. Es ersetzt Parameterwerte wörtlich, ohne besondere Behandlung.
Berücksichtigen Sie beispielsweise die folgenden Parameter:
参数名称 | 参数类型 | 参数值 |
---|---|---|
tableName | java.lang.String | events |
eventName | java.lang.String | Olympic Games |
Ursprünglicher Ausdruck (zu ersetzen):
<code class="language-sql">SELECT startDate, endDate, rating FROM $P!{tableName} WHERE name='$P!{eventName}'</code>
Das Ergebnis wird sein:
<code class="language-sql">SELECT startDate, endDate, rating FROM events WHERE name='Olympic Games'</code>
Entsprechend Ihrer Frage müssen Sie die WHERE- und ORDER BY-Klausel dynamisch festlegen. Sie können den folgenden Ausdruck verwenden:
<code class="language-sql">SELECT name, phone, email FROM company WHERE $P!{clause} = $P{key} ORDER BY $P!{order}</code>
wobei $P{key}
ein java.lang.String
-Parameter ist. Wenn der Wert $P!{clause}
einen Wert in Anführungszeichen erfordert, können Sie stattdessen den folgenden Ausdruck verwenden:
<code class="language-sql">SELECT name, phone, email FROM company WHERE $P!{clause} = '$P!{key}' ORDER BY $P!{order}</code>
Das obige ist der detaillierte Inhalt vonWie übergebe ich Parameter an WHERE- und ORDER BY-Klauseln in JasperReports-Abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!