在使用Ireport的时候,我从不建议采用这种方式制作报表:
JasperPrint jasperPrint = JasperFillManager.fillReport(String,Map,Connection); 使用hibernate的Session同样不推荐。
原因:
1.性能考虑:
如果你将一个数据库连接交给ireport也就意味着,你必须等待ireport将所有的操作完成才可以回收该链接,如果是在大批量数据显示的情况下(往往如此),将占用很长很长的连接时间,如果实现了JRDataSource接口,先将数据保存到一个list中,那么将花费你极少的时间来处理数据库这部分,之后的数据显示再交给ireport
2.数据库部分与ireport耦合太大
尤其是采用hibernate的session 那样带来的耦合度更大,
3.不利于代码的重用
如果你是实现了JRDataSource接口,现将数据保存到list中,那么即使你采用ireport来显示数据,在其他的程序中一样的可以随时调用你的getList()方法
4.安全性考虑
越是将数据库暴露到上层,那么应用系统就越危险。
其实实现JRDataSource接口非常简单:
只要实现两个方法:
public class LedgerDataSource implements JRDataSource{
private List datas = null ;
private int loop = -1 ;
private static Logger logger = Logger.getLogger(LedgerDataSource.class.getName());
public Object getFieldValue(JRField field) throws JRException {
StatBean temp = (StatBean)this.datas.get(loop);
Object rs = "" ;
if("month".equals(field.getName())){
rs = temp.getMonth();
}else if("day".equals(field.getName())){
rs = temp.getDay();
}else if("voucherNo".equals(field.getName())){
rs = temp.getVoucherNo();
}else if("debitMoney".equals(field.getName())){
rs = temp.getDebitMoney();
}else if("creditMoney".equals(field.getName())){
rs = temp.getCreditMoney();
}else if("DOrc".equals(field.getName())){
rs = temp.getDOrc();
}else if("summary".equals(field.getName())){
rs = temp.getSummary();
}else if("balance".equals(field.getName())){
rs = temp.getBalance();
}
temp = null ;
return rs;
}
public boolean next() throws JRException {
loop ++ ;
if(loop >= datas.size()){
return false;
}else{
return true ;
}
}
public void finalized(){
datas = null ;
}
}
在使用该datasource的时候,只需要JasperPrint jasperPrint = JasperFillManager.fillReport(String,Map,JRDataSource);
[转载javason的BLOG,感谢!]
分享到:
相关推荐
简单明了利用javabean做数据源,实现ireport报表功能
java实现ireport转换pdf,包含其中的主要所有jar包和报表文件,报表版本3.7.5以下都能运行可直接运行
自己通过ireport实现的大写金额转换,网上有若干类似文章,但都叙述的很简洁,没有详细步骤。本文我花费了大量心血,图文并茂地详细叙述了整个实现过程。应用的技术是scriptlet。
ireport用JRDataSource作为数据源案例源码,详细介绍请移步我主页查阅博客文章。初识ireport的同学可以参考本例子动手试试。 压缩包包含内容: ...1.JRDataSource实现java源文件 2.jrxml报表文件
Ireport实现金额大写,有详细的步骤,通过一个例子来实现。
JasperSoft ,,, ireport
Ireport实现金额大写 在irport里面写script脚本 完成转换
本示例提供了IReport报表样式和Java实现iReport报表功能的代码。 本示例主要描述了Action中利用JavaBean的方式实现IReport报表数据传递的写法,供刚接触IReport的朋友们参考。
IReport可以实现的效果图IReport可以实现的效果图
此文档相信讲解IREPORT的使用,以及用JAVA代码实现PDF EXCEL 的生成!
ireport+jasperrepot+javabean实现可视化报表的项目源文件
iReport 是为JasperReports Library和JasperReports Server设计的报表可视化设计器。本资源是MAC版本的iReport iReport-5.1.0-windows-installer MAC版
iReport 是为JasperReports Library和JasperReports Server设计的报表可视化设计器。 iReport的遵循AGPL自由开源协议,在SourceForge.net开源社区发布
ireport子报表嵌套.doc,文档主要描述了,ireport如何通过子报表技术实现一对多行数据展示问题
iReport-4.5.1.zip 工具包,由于上传文件大小受限,先传除ireport文件夹之外的文件,ireport文件夹将作为另外一个资源上传,资源名称为iReport-4.5.1 ireport.zip 同时下载iReport-4.5.1.zip和iReport-4.5.1 ireport...
参数和变量 62 字段 62 SQL查询的字段注册 63 JavaBean的字段...接口 93 JavaBean作为数据源 93 JavaBean的一个字段作为数据源 95 XML数据源 96 字段的注册 98 XML和子报表 100 CSV数据源...
iReport 报表、子报表、主从报表、合计、实例解析1. 开发使用步骤(iReport4.1)... 2 4.1. JasperReport 和iReport的介绍... 2 4.1.1. JasperReport 简介... 3 4.1.2. iReport 简介... 3 4.1.2.1. iReport几个重要...
ireport利用javabean做数据源.docx
ireport在表格展示数据时,相同的列合并问题一直没有解决,查询了大量资料后,将其实现了。具体的解决办法示例在这个文档中。