我正在用 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/