java - 借助 Java 代码在 JasperReports 中添加 FilterExpression

标签 java jasper-reports

我正在用 Java 开发一个工具,它可以在 JasperReports 中进行一些自动化(自动打印、设置参数等)。我主要使用 JasperReport 库。现在我必须使用 Java 代码设置过滤器表达式。我知道如何准备参数,我是这样做的:

Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("filter", "where name like '%.'");

然后,我在生成 PDF 报告时传递了这个参数:

JasperPrint pdf = JasperFillManager.fillReport(jasperReport, parameters, connection);

如果有这么简单的修改参数的方法,我想也有类似的修改过滤器表达式的方法。我已经搜索了很长时间,但一无所获。

最佳答案

由于您使用的是数据库连接,所以我看不到比在查询中过滤更好的方法。

这限制了需要从数据库传输和迭代的数据,从而提高了性能并减少了内存使用。

请注意,您正在使用 $P!() 传递整个查询,我可能更愿意使用准备好的语句仅传递值并使用 $ 在 jasper 报告表达式中设置查询P() 要了解差异,请参阅 JasperReports: Passing parameters to query

如果您无法在查询中进行过滤,另一种解决方案是将数据加载到 bean 中,对其进行过滤,然后将生成的 List 作为 JRBeanCollectionDataSource 传递

关于java - 借助 Java 代码在 JasperReports 中添加 FilterExpression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38629932/

相关文章:

java - 如何在Java中设置Oracle编码

java - 用于匹配和限制字符类的正则表达式

java - JasperServer 错误 - 无法获取下一条记录

java - 列表到其他列表 jasper 报告

jsf - 下载 Jasper 报告而不是在浏览器中打开

java - 根据时间限制运行线程

java - 2个java进程共享JVM吗

excel - JasperReports 中每个工作表属性一页

java - 条件样式无法更改背景色

JavaFX 禁用选项卡导航