`

实现ireport的JRDataSource接口

阅读更多

在使用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,感谢!]
分享到:
评论

相关推荐

    ireport利用javabean做数据源实例

    简单明了利用javabean做数据源,实现ireport报表功能

    java实现ireport转换pdf

    java实现ireport转换pdf,包含其中的主要所有jar包和报表文件,报表版本3.7.5以下都能运行可直接运行

    Ireport实现金额大写(自己实现的)

    自己通过ireport实现的大写金额转换,网上有若干类似文章,但都叙述的很简洁,没有详细步骤。本文我花费了大量心血,图文并茂地详细叙述了整个实现过程。应用的技术是scriptlet。

    ireport用list作为数据源.zip

    ireport用JRDataSource作为数据源案例源码,详细介绍请移步我主页查阅博客文章。初识ireport的同学可以参考本例子动手试试。 压缩包包含内容: ...1.JRDataSource实现java源文件 2.jrxml报表文件

    Ireport实现金额大写.doc

    Ireport实现金额大写,有详细的步骤,通过一个例子来实现。

    ireport

    JasperSoft ,,, ireport

    jasperIreport +Ireport实现金额大写

    Ireport实现金额大写 在irport里面写script脚本 完成转换

    IReport报表开发示例

    本示例提供了IReport报表样式和Java实现iReport报表功能的代码。 本示例主要描述了Action中利用JavaBean的方式实现IReport报表数据传递的写法,供刚接触IReport的朋友们参考。

    IReport可以实现的效果图

    IReport可以实现的效果图IReport可以实现的效果图

    JAVA+IREPORT实现报表功能

    此文档相信讲解IREPORT的使用,以及用JAVA代码实现PDF EXCEL 的生成!

    ireport+javabean实现可视化报表

    ireport+jasperrepot+javabean实现可视化报表的项目源文件

    iReport-5.1.0.dmg iReport MAC版

    iReport 是为JasperReports Library和JasperReports Server设计的报表可视化设计器。本资源是MAC版本的iReport iReport-5.1.0-windows-installer MAC版

    iReport5.6版本。加iReport下载地址

    iReport 是为JasperReports Library和JasperReports Server设计的报表可视化设计器。 iReport的遵循AGPL自由开源协议,在SourceForge.net开源社区发布

    ireport子报表嵌套

    ireport子报表嵌套.doc,文档主要描述了,ireport如何通过子报表技术实现一对多行数据展示问题

    iReport-4.5.1.zip

    iReport-4.5.1.zip 工具包,由于上传文件大小受限,先传除ireport文件夹之外的文件,ireport文件夹将作为另外一个资源上传,资源名称为iReport-4.5.1 ireport.zip 同时下载iReport-4.5.1.zip和iReport-4.5.1 ireport...

    iReport开发文档

    参数和变量 62 字段 62 SQL查询的字段注册 63 JavaBean的字段...接口 93 JavaBean作为数据源 93 JavaBean的一个字段作为数据源 95 XML数据源 96 字段的注册 98 XML和子报表 100 CSV数据源...

    iReport 报表、子报表、主从报表、合计、实例解析

    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利用javabean做数据源.docx

    用子表的方式解决ireport相同列合并问题

    ireport在表格展示数据时,相同的列合并问题一直没有解决,查询了大量资料后,将其实现了。具体的解决办法示例在这个文档中。

Global site tag (gtag.js) - Google Analytics