【问题标题】:JasperReports and custom data sourcesJasperReports 和自定义数据源
【发布时间】:2010-11-16 15:08:24
【问题描述】:

我正在考虑将 JasperReports 嵌入到现有的网络应用程序中以进行报告。 webapp 位于一个古老而复杂的现有数据库之上,确实不适合报告编写者用来直接编写报告。

我想看的是围绕我们现有的数据访问层编写某种包装器(编写是为了让我们的生活更轻松地与上述古老而复杂的数据库交谈)。有没有人有为 JasperResports 编写自定义数据源或做类似事情的经验?

更新

我想我的问题可能不清楚 - 这可能是因为我的要求也不清楚。我想提供一些方法,最终用户可以使用 iReport 之类的东西来编写针对数据库的报告,然后使用 JasperReportServer 来安排/查看报告。然而,这个数据库真的非常非常糟糕,而且从来没有被设计成以这种方式使用。我们在它周围有一个访问层,webapp 使用它来与它对话。我想让我的最终用户完全远离数据库,使用访问层的自定义数据源的想法似乎是一个不错的选择。但是,我发现很少有关于如何做到这一点的文档。也许它比我想象的要容易得多,而我只是想让一个死的简单的东西变得太复杂。

更新

感谢您的回答。我认为我的问题尚未解决,但我认为答案有助于了解需求阶段。

【问题讨论】:

    标签: jasper-reports


    【解决方案1】:

    Jasper 报告允许您使用“JavaBean”数据源。您可以将数据加载到任何 Java Bean 结构中并根据该结构构建报告。效果很好。

    请参阅“自定义数据源”部分 here

    【讨论】:

    • 谢谢。我已经看过那一点,它只显示了一个基本示例。我想我可以看到如何从报告中提取各种参数。我看不到的是如何将可用字段呈现给报告作者。
    • 我们这样做的方法是创建一个 jar 文件,其中包含用于报告的所有 Java Bean。然后将 jar 文件添加到 iReport 中的类路径中。我们在上面的链接中放入了提供者类,如图 3.5 所示。已经有一段时间了,但我认为它就是这样工作的。
    • @Jacob Schoen 嗨,我想知道是否可以将参数传递给 java bean?那我们就可以处理一些业务逻辑了,谢谢。
    • 不要将参数传递给 JavaBean,而是自己生成 Java Bean 实例并将其提供给报告。我在这篇博文中介绍了这种方法 - richardnichols.net/2010/02/…
    【解决方案2】:

    每个 JasperReports 模板都可以有两个不同的数据源。一种是使用一些 jdbc 驱动程序将其直接连接到数据库,或者在您的情况下,提供一组 java bean (POJO),通常是列表。

    JasperReports 模板类似于方法定义。它有一个名字,即编译的 JR 对象和参数(数据源和一些最流行的 Java 类型的输入参数列表)。

    我的建议是使用 iReport 工具。打开 JasperReports 包附带的一些示例,对其进行分析和调整。没那么复杂。

    更新

    让客户创作 JasperReports 模板、编译并添加到类路径意味着您需要过多地打开系统。通常客户提供所需报告的描述,开发人员创建数据源并设计模板。 JasperReports 可以有参数。如果这些参数通过 UI 公开,用户可以在运行时更改报表的行为。

    如果您确实需要更大的灵活性,请使用 JasperReports 提供的 API 来创作模板。我可以想象一些简单的 DLS 供高级用户与您的系统通信,创建动态报告。

    【讨论】:

    • 我不知道他们可以有多个数据源。计划是使用 iReport 进行报告创作。我认为我在这里缺少的是关于查询我的访问层的信息,我所见过的示例都没有显示任何相关信息。我已经更新了问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多