Heim >Datenbank >MySQL-Tutorial >Wie übergebe ich Parameter an WHERE- und ORDER BY-Klauseln in JasperReports-Abfragen?

Wie übergebe ich Parameter an WHERE- und ORDER BY-Klauseln in JasperReports-Abfragen?

DDD
DDDOriginal
2025-01-18 06:37:09681Durchsuche

How to Pass Parameters to WHERE and ORDER BY Clauses in JasperReports Queries?

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

Die

$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

Die

$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>

Verwendung in Ihrem Fall

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn