原文地址:http://www.tutorialspoint.com/jasper_reports/jasper_report_data_sources.htm
Datasources是一个结构化的数据容器。当要生成报表时,Jasperreport引擎从数据源获取数据。数据可以从数据库(databases)、XML文件(XML file)、对象数组、对象集合获取。在Filling Reports章节可以看到,fillReportXXX()方法需要接收一个数据源填充这个报表,比如net.sf.jasperreports.engine.JRDataSource对象或java.sql.Connection对象(当报表数据在相关的数据库中查找到)。

JRDataSource接口有两个需要实现的方法:

  1.public boolean next() throws JRException;

  尝试将光标定位到数据源的下一个位置

  2.public Object getFieldValue(JRField jrField) throws JRException;

  此方法提供了从当前数据源记录中获取报表的每个字段的值

Datasource Implementations

下表总结了数据源与他们的实现类

Datasource Implementation class
JDBC net.sf.jasperreports.engine.JRResultSetDataSource
JavaBean

net.sf.jasperreports.engine.data.JRBeanCollectionDataSource,

net.sf.jasperreports.engine.data.JRBeanArrayDataSource

Map-based

net.sf.jasperreports.engine.data.JRMapCollectionDataSource,

net.sf.jasperreports.engine.data.JRMapArrayDataSource

TableModel net.sf.jasperreports.engine.data.JRTableModelDataSource
XML net.sf.jasperreports.engine.data.JRXmlDataSource
CSV net.sf.jasperreports.engine.data.JRCSVDataSource
XLS

net.sf.jasperreports.engine.data.JRXlsDataSource

net.sf.jasperreports.engine.data.XlsDataSource

Empty net.sf.jasperreports.engine.data.JREmptyDataSource

JDBC data sources

  这是最常用的从相关数据库提取报表数据的方式。如果用java.sql.Connection来代替传递给引擎,它会在JRResultDataSource实例中执行相关查询并保存返回的java.sql.ResultSet对象。

JavaBean data sources

  类JRBeanArrayDataSourceJRBeanCollectionDataSource分别代表了实现包装数组或集合的JavaBean对象。数组或集合内的每个对象都被视为该类型数据源的一条记录。通过命名约定映射JavaBen属性与对应的报表字段之间的字段。报表字段的名称必须与JavaBean属性的名称相同(按指定的JavaBeans规范)。

Map-based data sources

  实现类JRMapArrayDataSourceJRMapCollectionDataSource使用时,必须是已经把报表数据以java.util.Map对象的形式保存在内存中。包装数组或集合中的每个Map对象可以被认为是数据源中的虚拟记录,并且每个报表字段的值是以报表字段的名称作为key提取的。

TableModel data sources

//此处省略

Empty data sources

JREmptyDataSource类模拟一个具有经定数的虚拟空记录的数据源。它用UI工具提供基本的报表预览功能,或者特殊的报表模板,或者用于测试或调试。

Rewindable Data Sources

  接口net.sf.jasperreports.engine.JRRewindableDataSource继承了JRDataSource接口。它增加了一个moveFirst()方法。这个方法的目的是把光标移动到数据源的第一条记录。

Rewindable数据源用于子报表band设置了isSplitAllowed="false"表明不允许分割,或者当前页面没有足够的空间给子报表进行渲染。

  上面所有的数据源都实现了JRRewindableDataSource,除了JRResultSetDataSource,因为它不支持回退记录指针。数据源传递一个手动包装的java.sql.ResultSet给子报表是有问题的。正确的处理方法是SQL查询在子报表模板内,因为在重启下一个页面的子报表时,引擎会再次执行。

Data Source Providers

JasperReport库有一个接口net.sf.jasperreports.engine.JRDataSourceProvider。它有助于数据源对象的创建与处理。当使用GUI工具创建一个报表模板时,需要使用自定义的报表数据源专用工具。JRDataSourceProvider是连通自定义数据源到设计工具的标准方法。此接口的自定义实现需实现数据源对象的创建与处理,并且如果可能列出数据源里可用的报表字段。

public boolean supportsGetFieldsOperation();

public JRField[] getFields(JasperReport report) throws JRException, UnsupportedOperationException;

public JRDataSource create(JasperReport report) throws JRException;

public void dispose(JRDataSource dataSource) throws JRException;

JasperReports教程:Report Data Sources的更多相关文章

  1. Spark SQL 之 Data Sources

    #Spark SQL 之 Data Sources 转载请注明出处:http://www.cnblogs.com/BYRans/ 数据源(Data Source) Spark SQL的DataFram ...

  2. Spark SQL External Data Sources JDBC官方实现写测试

    通过Spark SQL External Data Sources JDBC实现将RDD的数据写入到MySQL数据库中. jdbc.scala重要API介绍: /** * Save this RDD ...

  3. Spark SQL External Data Sources JDBC简易实现

    在spark1.2版本中最令我期待的功能是External Data Sources,通过该API可以直接将External Data Sources注册成一个临时表,该表可以和已经存在的表等通过sq ...

  4. 黄聪:Microsoft Enterprise Library 5.0 系列教程(五) Data Access Application Block

    原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(五) Data Access Application Block 企业库数据库访问模块通过抽象工厂模式,允许用户 ...

  5. 解决IDEA Springboot项目sql文件打开提示No data sources are configured to run this SQL and provide advanced的问题

    Idea2018的Springboot项目,如果里面有.sql文件,打开后,会提示"No data sources are configured to run this SQL and pr ...

  6. 警告: No data sources are configured to run this SQL and provide advanced code assistance. Disable this inspection via problem menu (Alt+Enter). more... (Ctrl+F1) SQL dialect is not configured. Postgr

    python3出现问题: 警告: No data sources are configured to run this SQL and provide advanced code assistance ...

  7. vue教程1-02 data里面存储数据

    vue教程1-02 data里面存储数据 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...

  8. Weblogic多数据源(Multi Data Sources)应用实践

    原创 2012年03月29日 10:55:28 标签: weblogic / 数据库 / 负载均衡 / 数据中心 / jdbc / 应用服务器   大型系统在进行数据库部署时,常常会分为主数据应用中心 ...

  9. JasperReports教程

    JasperReports教程 Jasper报表是一个开源的Java报表引擎,是基于Java的,它没有自己的表达式语法. 由于JasperReports是一个Java类库,而不是针对最终用户,而是有针 ...

随机推荐

  1. Win7配置Go环境

    最近想学习下Go语言,先从最基本的Hello Go开始,搭建Go开发环境 一.下载Go包 由于Go官网国内访问经常有问题,可以从国内的镜像下载: http://www.golangtc.com/ 二. ...

  2. jQuery使用ajaxStart()和ajaxStop()方法

    ajaxStart()和ajaxStop()方法是绑定Ajax事件.ajaxStart()方法用于在Ajax请求发出前触发函数,ajaxStop()方法用于在Ajax请求完成后触发函数.它们的调用格式 ...

  3. C# 分支语句

    选择语句 if,else if是如果的意思,else是另外的意思,if后面跟()括号内为判断条件,如果符合条件则进入if语句执行命令.如果不符合则不进入if语句.else后不用加条件,但是必须与if配 ...

  4. js argument实参集合与局部变量、参数关系

    形参 形式上传递的参数 function fn1(a,b,c) {//a,b,c就是形参 实参 实际传递的参数 fn1 (1,2,5);//1,2,5就是实参 argument 定义: 实参的集合 用 ...

  5. HTML5原生拖放实例分析

    HTML5提供了原生拖放功能的JavaScript API,使用起来很方便. 兼容性: 对于PC端浏览器,Firefox.Chrome.Safari支持良好,而IE和Edge浏览器有些特性不支持,如I ...

  6. 原生js实现tab选项卡

    1.html部分 <body>        <div id="tab">            <div class="tab_menu& ...

  7. Bootstrap-用ICheck插件给CheckBox换新装

    直接来吧! 下面是添加上复选框以后的树形菜单效果: 这样看起来有种驴唇不对马嘴的感觉. 所以就要想办法给这些复选框添加1些样式,让全部界面看起来搭配1些. 通过查询得知,有个叫ICheck的第3方Bo ...

  8. R语言学习笔记:日期处理

    1.取出当前日期 Sys.Date() [1] "2014-10-29" date()  #注意:这种方法返回的是字符串类型 [1] "Wed Oct 29 20:36: ...

  9. 利用UIScrollView实现几个页面的切换

    此实例可以了解一下UIScrollView的运用,以及表格跟页面跳转的内容: 原作者地址:http://www.cocoachina.com/bbs/read.php?tid=323514 效果图如下 ...

  10. android lsitview setOnItemLongClickListener 无效或不执行

    今天遇到了lsitview的setOnItemLongClickListener的方法不执行,我是在listview中的每一个ITEM都存放了不同的布局:给整个item布局设置了点击事件onClick ...