简体   繁体   English

jasper 报告从 jasper 加载报告

[英]jasper reports loading report from jasper

I'm loading the jasper reports file from .jasper file to improve the performance as below.我正在从 .jasper 文件加载 jasper 报告文件以提高性能,如下所示。

JasperReport rpt = (JasperReport)JRLoader.loadObjectFromFile(location);

but I have a requirement now, that a query which is formed dynamically has to be set to .jasper (compiled) file.但我现在有一个要求,必须将动态形成的查询设置为 .jasper(编译)文件。 is there a way to do the same?有没有办法做到这一点?

Something like this?像这样的东西?

Java爪哇

JasperReport rpt = (JasperReport)JRLoader.loadObject(Your .jasper file path);

Map paramMap = new HashMap();
paramMap.put("p_sql", "select * from baztable where foo='bar' and fuga='hoge' order by username");
// pass the dynamic query to .jasper file.
JasperPrint print = JasperFillManager.fillReport(rpt, paramMap, connection);

jrxml xml文件

<parameter name="p_sql" class="java.lang.String" isForPrompting="false">
    <defaultValueExpression><![CDATA["select * from baztable order by username"]]></defaultValueExpression>
</parameter>
<queryString>
    <![CDATA[$P!{p_sql}]]>
</queryString>

You can use the $P!您可以使用 $P! (Parameter with exclamation) which can be used for conditional queries. (带感叹号的参数)可用于条件查询。 Using this you can craft dynamic queries based on certain conditions.使用它,您可以根据某些条件制作动态查询。 A guide for the same can be found here.可以在此处找到相同的指南

This is a hack method for the JRXML file.这是 JRXML 文件的 hack 方法。 The JRXML file has your query. JRXML 文件包含您的查询。 You can write a Java code or any other code to replace/write down your Query here:您可以在此处编写 Java 代码或任何其他代码来替换/记下您的查询:

Sample MongoDB Query:示例 MongoDB 查询:

<queryString language="MongoDbQuery">
    {'collectionName':'customer'}
</queryString>`

只需在 ireport 中打开 .jasper 文件,您就可以加载 .jasper 文件并对其进行编辑。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM