JasperReport是一种采用纯Java实现的快速且非常流行的生成报表的类库。而对于任何的报表方案,取得数据并传递给报表引擎是其中最重要且最值得关心的方面。但遗憾的是,在这方面JasperReport本身似乎有一定的不足。而如今的很多Java应用程序,采用数据获取框架来进行数据的匹配与动态生成SQL。例如iBATIS数据映射框架。当然,如果只是使用JasperReport获取数据及管理数据的默认机制的话,不足以与现成的数据框架进行很好的平衡。但可喜的是,可以通过使用传递给JasperReport一个数据库的连接进行代替,当然这种连接可以通过使用XML进行非常方便的管理与配置。
一、 准备工作
与Hibernate类似,iBATIS也是一个ORM解决方案,不同的是两者各有侧重。Hibernate提供了Java对象到数据库表之间的直接映射,开发者无需直接涉及数据库操作的实现细节,实现了一站式的ORM解决方案。而iBATIS则采取了另一种方式,即提供Java对象到SQL(面向参数和结果集)的映射实现,实际的数据库操作需要通过手动编写SQL实现。
iBATIS是又一个O/R Mapping解决方案,j2ee的O/R方案真是多,和Hibernate相比,iBATIS最大的特点就是小巧,上手很快。如果你不需要太多复杂的功能,iBATIS是能满足你的要求又足够灵活的最简单的解决方案。在本文的示例中,采用Spring+JSF+iBATIS的模式进行示例的开发。所使用的lib如下图所示:
二、 在iReport中可视化定制模板
定制报表格式有二种方式,一种就是写jrxml文件,其实就是xml文件,只不过是后缀名不一样罢了。另一种方式更直接,就是生成一个JasperDesign类的实例,在japsperDesign中自己定义模板。jrxml文件也是通过一个JRXmlLoad加载过来,转成JasperDesign类的实例。也就是说写jrxml文件还需要进行解析,加载。现实中我们使用的报表一般格式比较固定,因而可以通过先使用iReport工具生成模板,再加载解析的方式。这种方式简单,而且可见性强。
iReport做为一个优秀的报表设计器,有着功能非常强大的特性。作为开源的Java程序,不但有适合于Windows安装的应用程序,同时,还提供完全开放的源代码,可供参考及原理分析。在本文中,主要通过图形界面中的模板设计,以及与数据库的连接等一系列的操作,来介绍如何定制一定要求的报表模板。
通过iReport可初见化的图形界面,可以设计出各种各样的简单或复杂的报表。通过iReport的这种可视化界面设计,可以为JasperReport提供优秀的报表模板,而无须去理解或是掌握那些复杂的XML语法。如此则可以Web报表开发节省大量的开发时间。
在进行iReport模板设计之前,需要编写JavaBean类:MonthlySalesBean.java,代码如下:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
public class MonthlySalesBean {
private int employeeID;;
private String last = null;
private String first = null;
private BigDecimal total = null;
private List sales = null;
private LatestSale latestSale = null;
public static List createBeanCollection () {
List list = new ArrayList ();
MonthlySalesBean msb = new MonthlySalesBean ();
msb.setEmployeeID(1);
msb.setFirst("John");
msb.setLast("Doe");
msb.setTotal(new BigDecimal ("1600.50"));
LatestSale ls = new LatestSale ();
ls.setAmount(new BigDecimal ("32.21"));
msb.setLatestSale(ls);
list.add(msb);
return list;
}
public int getEmployeeID() {
return employeeID;
}
public void setEmployeeID(int employeeID) {
this.employeeID = employeeID;
}
public String getFirst() {
return first;
}
public void setFirst(String first) {
this.first = first;
}
public String getLast() {
return last;
}
public void setLast(String last) {
this.last = last;
}
public BigDecimal getTotal() {
return total;
}
public void setTotal(BigDecimal total) {
this.total = total;
}
public List getSales() {
return sales;
}
public void setSales(List sales) {
this.sales = sales;
}
public LatestSale getLatestSale() {
return latestSale;
}
public void setLatestSale(LatestSale latestSale) {
this.latestSale = latestSale;
}
}
将上面的类打成一个jar包,并置于classpath目录下,则iReport可以进行访问。使用JavaBean做为数据源,为了在设计报表时能够看到数据,在程序中要为iReport提供一个静态方法,该方法返回上面定义JavaBean的一个结果集,这个静态方法可能在程序运行中并不是必须的,但是在iReport中它确实必须的,换句话说,这个静态方法是专门为iReport量身定做的,为了iReport在设计报表时能够调用这个静态方法返回相应的JavaBean结果集,以便设计的报表放在Java项目中之前就能像使用SQL数据库数据源一样可以浏览。在iReport中先进行数据源的连接配置,此处采用是JavaBeans set data source连接方式:
图2.在iReport进行数据源的连接
分享到:
相关推荐
iReport 和 Jasperreport整合开发web报表向导2
jasperreport+ireport开发java报表入门级教程(完整版)
iReport 和 Jasperreport整合开发web报表.rar
iReport 和 Jasperreport整合开发web报表向导
iReport和Jasperreport整合开发web报表向导.pdf
CSDN技术中心 iReport 和 Jasperreport整合开发web报表向导.pdf
iReport 和 Jasperreport整合开发web报表向
iReport 和 Jasperreport整合开发web报表向3.doc
JasperReport+iReport整合的Web报表开发这篇文章的PDF版本
使用JasperReport+iReport进行WEB开发,是这篇文章http://blog.csdn.net/tch918/article/details/12200607的源码
JasperReport+IReport开发Java报表入门
jasperreport+ireport开发java报表入门级教程(完整版)
jasperreport+ireport开发java报表入门级教程,这是最好的自学教程,我也是通过这学习的。希望对大家有帮助。
使用JasperReport和iReport制作java报表
基于JasperReport iReport的SCADA系统Web报表开发,孙利超,王小明,报表系统是SCADA系统的一个重要组成部分,而基于Web模式的报表开发技术能更加直接的使用户查询数据。本系统将基于XML的Java开源报表引
jasperreport生成多种格式的报表,包括PDF、HTML、RTF、XML、EXCEL等格式的报表
原创:iReport&JasperReport开发手记(一) List报表开发与发布 b/s下,List报表开发与发布
Struts2.0+JasperReport+IReport+Oracle 报表开发 整个项目打包上传,用MyEclipse导入即可调试使用 含报表文件、数据库表结构及测试数据,项目中解决了PDF中文不显示问题
整合Struts2+JasperReport Web报表应用示例 整合Struts2+JasperReport Web报表应用示例