iBATIS和JasperReports制作报表(一)

来源:互联网 发布:道奇charger srt数据 编辑:程序博客网 时间:2024/05/16 13:56
许多Java应用程序的核心任务,是检索数据并显示它,有时需要复杂的打印或基于Web的报告。幸运的是使用Java开发,两个流行的开源解决方案的合作工作非常出色,以帮助您完成这项工作。在iBATIS数据映射框架提供了一个简单的基于XML的用于映射java对象和关系数据库的机制。 JasperReports是一个功能齐全的java报表类库,完全可以在你的应用中使用。把两者结合起来,可以实现产品级的便于维护的报表。

    JasperReports是一个开源Java的报告库,作为一个可行的替代昂贵的商业报表解决方案正迅速日益普。任何报表解决方案,获取数据后送往报表引擎处理市最基本的原理,不幸的是JasperReports在这方面有点问题。

    大多数Java应用程序使用某种类型的数据获取框架,实现数据映射和动态生成SQL语句,如iBatis数据映射框架。 JasperReports的默认机制,利用现有的数据映射框架,检索和管理数据不够灵活。然而,相反,您可以通过把数据库连接交给报表引擎,它可以根据基于XML的报告模板,使用SQL查询来填充报告。

    虽然实现很简单,但是这种机制把应用约束在JasperReports模板中嵌入的sql语句。此外,谁又愿意向一个已经相当复杂的应用中添加另一个模块?最好的解决方案是利用已经有的数据框架,让JasperReports仅去处理报表。

    在本文中你将学习如何整合JasperReports和iBATIS数据映射框架。通过两个简单的情况,把JasperReports和iBATIS的报告生成。第一种方案适用于iBATIS实现,使用iBATIS的功能获取一个Java bean的List。这种情况并不需要你写任何自定义代码。因为,JasperReports框架中提供了一些支持类,实现从iBATIS中获取数据,填充到报表中。

    对于第二种情况-一个更基本的使用iBATIS返回java.util.Map类型的对象-您可以创建一些自定义的代码来来填充到报表中。除了使用JasperReports的类库,为了完成这两项工作我们会使用iReport报表设计器,从而简化并加速JasperReports模板文件的制作过程。

运行实例

    本文的示例代码生成一个简单的月度销售报告,我涉及到了以上两种类型的实现。报表的数据检索从一个嵌入式Apache Derby数据库通过iBATIS数据映射框架获得。这些例子都建立成一个JSF的/基于Spring的Web应用程序运行在与Derby相同的JVM上。我已经提供了一个ant脚本, WAR文件-刚刚执行任务buildWar编译内容和建设。您需要tomcat5.5x部署和运行的例子。您还需要在有Acrobat阅读器插件的Web浏览器中来查看报告输出。


原创粉丝点击