获得3分钟生成Jasper报告

时间:2015-05-08 09:34:14

标签: jasper-reports

我正在使用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); 

上面的代码我用来打印报告,但是加载报告的时间太长了。请提出我的错误和其他想法...

1 个答案:

答案 0 :(得分:0)

我猜SQL查询可能是问题所在。您是否尝试在SQL查询工具中执行它并检查它运行了多长时间?优化它应该会带来性能上的提升。

您还在运行查询两次:在报告之前以及通过JasperFillManager.fillReport()调用填充它时。

如果没有具体的理由来检查查询是否包含任何记录,我建议让JasperReports处理查询以及没有找到记录的情况。在这种情况下,您可以通过&#34;当没有数据类型时确定特定行为&#34;报告设计中的财产。