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
Freigeben: 2025-01-18 06:31:08
Original
643 Leute haben es durchsucht

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>
Nach dem Login kopieren

Ergebnis:

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

$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>
Nach dem Login kopieren

Ergebnis:

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

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>
Nach dem Login kopieren
  • 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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage