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:
java.lang.String
ersetzt die Engine $P{parameterName}
durch einen Wert in Anführungszeichen. java.lang.Integer
ersetzt die Engine $P{parameterName}
durch einen numerischen Wert. 参数名称 | 参数类型 | 参数值 |
---|---|---|
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$P!{paramName}
-Syntax führt eine einfache Ersetzung durch, die normalerweise zum Ersetzen des genauen Werts eines Arguments verwendet wird.
参数名称 | 参数类型 | 参数值 |
---|---|---|
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>
Für die gegebene Abfrage können die folgenden Ausdrücke gelten:
$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>
$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!