Heim >Datenbank >MySQL-Tutorial >Wie übergebe ich Parameter mithilfe der Syntax $P{} und $P!{} ordnungsgemäß an JasperReports-Abfragen?

Wie übergebe ich Parameter mithilfe der Syntax $P{} und $P!{} ordnungsgemäß an JasperReports-Abfragen?

DDD
DDDOriginal
2025-01-18 06:31:08684Durchsuche

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

JasperReports-Abfrageparameterübergabe

Bei Datenbankabfragen ist es eine häufige Anforderung, Parameter basierend auf Benutzereingaben dynamisch zu übertragen. Bei einigen Benutzern können Probleme auftreten, wenn Parameter mit der Syntax $P{} übergeben werden.

JasperReports bietet zwei Syntaxen für die Referenzierung von Parametern: $P{} und $P!{}.

$P{paramName}Grammatik

$P{paramName} wird hauptsächlich zum Festlegen des Eingabeparameterwerts der WHERE-Klausel verwendet. Der Ersetzungsalgorithmus für diese Syntax ähnelt java.sql.PreparedStatement. Es verarbeitet verschiedene Parametertypen intelligent:

  • Bei Parametern vom Typ java.lang.String ersetzt die Engine $P{parameterName} durch einen Wert in Anführungszeichen.
  • Bei Parametern vom Typ java.lang.Integer ersetzt die Engine $P{parameterName} durch einen numerischen Wert.

Beispiel:

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

Ursprünglicher Ausdruck:

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

Ergebnis:

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

$P!{paramName}Grammatik

Die

$P!{paramName}-Syntax führt eine einfache Ersetzung durch, die normalerweise zum Ersetzen des genauen Werts eines Arguments verwendet wird.

Beispiel:

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

Ursprünglicher Ausdruck:

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

Ergebnis:

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

Auf Frage anwenden

Für die gegebene Abfrage können die folgenden Ausdrücke gelten:

  • Wenn $P{key} ein java.lang.String-Typparameter ist:
<code class="language-sql">SELECT name, phone, email FROM company WHERE $P!{clause} = $P{key} ORDER BY $P!{order}</code>
  • Wenn $P{key} ein Nicht-String-Typparameter ist:
<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 mithilfe der Syntax $P{} und $P!{} ordnungsgemäß an 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