Passing query parameters in JasperReports
JasperReports allows you to dynamically control various aspects of your query using parameters, such as WHERE and ORDER BY clauses. This is useful when you want users to have flexibility in specifying how data is retrieved.
Parameter reference syntax
Parameter reference has two syntax expressions: $P{}
and $P!{}
.
$P{paramName}
is used to replace parameters in the WHERE clause. For example, if you have a parameter of type java.lang.String named "eventName", you can use it in the WHERE clause like this: <code class="language-sql">WHERE name=$P{eventName}</code>
$P!{paramName}
is used to replace parameters anywhere in the query, including WHERE and ORDER BY clauses. For example, if you have a parameter of type java.lang.String named "order", you can use it in an ORDER BY clause like this: <code class="language-sql">ORDER BY $P!{order}</code>
Handling parameter types
$P{}
The syntax is "intelligent" and handles different parameter types correctly. For example, if you have a parameter of type java.lang.String, the engine will replace $P{paramName}
with a quoted value. If you have a parameter of type java.lang.Integer, the engine will replace $P{paramName}
with a numeric value.
Example usage
To pass a field from the database as a parameter, you can use the $P!{}
syntax. For example, the following query uses the $P!{clause}
parameter to specify the WHERE clause and the $P!{order}
parameter to specify the ORDER BY clause:
<code class="language-sql">SELECT name, phone, email FROM company WHERE $P!{clause} = $P{key} ORDER BY $P!{order}</code>
In this example, the $P!{clause}
parameter is of type java.lang.String and the $P!{order}
parameter is of type java.lang.String.
The above is the detailed content of How to Pass Parameters to Queries in JasperReports?. For more information, please follow other related articles on the PHP Chinese website!