我正在使用Jasper报告开发Invoice打印系统,现在我可以打印报告但是加载报告需要2000ms,也需要2000ms来开始打印, 这些是我使用JAR FILES,
公地BeanUtils的-1.4 公共沼气池-1.7 共享记录-1.0.3 公地的BeanUtils-1.4 Groovy的所有-1.7.5 蜡染所有-1.7 barcode4j-2.1 itextpdf-5.1.0 JasperReports的-6.0.3 xercesImpl-2.11.0 XML的API-EXT-04年3月1日
preparedStatement = conn.prepareStatement(sqlString);
resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
HashMap<String, Object> hm = new HashMap<>();
JasperDesign jasperDesign = JRXmlLoader.load(new File(
"C:/Invoice/Invoice.jrxml"));
JRDesignQuery designQuery = new JRDesignQuery();
designQuery.setText(sqlString);
jasperDesign.setQuery(designQuery);
JasperReport jasperReport = JasperCompileManager
.compileReport(jasperDesign);
JasperPrint jasperPrint = JasperFillManager.fillReport(
jasperReport, null, conn);
for (int i = 0; i < copies; i++) {
JasperPrintManager.printReport(jasperPrint, false);
}
JasperViewer.viewReport(jasperPrint);
上面的代码我用来打印报告,但是加载报告的时间太长了。请提出我的错误和其他想法...
答案 0 :(得分:0)
我猜SQL查询可能是问题所在。您是否尝试在SQL查询工具中执行它并检查它运行了多长时间?优化它应该会带来性能上的提升。
您还在运行查询两次:在报告之前以及通过JasperFillManager.fillReport()调用填充它时。
如果没有具体的理由来检查查询是否包含任何记录,我建议让JasperReports处理查询以及没有找到记录的情况。在这种情况下,您可以通过&#34;当没有数据类型时确定特定行为&#34;报告设计中的财产。