JasperReports教程:Report Data Sources
原文地址: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
类JRBeanArrayDataSource与JRBeanCollectionDataSource分别代表了实现包装数组或集合的JavaBean对象。数组或集合内的每个对象都被视为该类型数据源的一条记录。通过命名约定映射JavaBen属性与对应的报表字段之间的字段。报表字段的名称必须与JavaBean属性的名称相同(按指定的JavaBeans规范)。
Map-based data sources
实现类JRMapArrayDataSource与JRMapCollectionDataSource使用时,必须是已经把报表数据以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的更多相关文章
- Spark SQL 之 Data Sources
#Spark SQL 之 Data Sources 转载请注明出处:http://www.cnblogs.com/BYRans/ 数据源(Data Source) Spark SQL的DataFram ...
- Spark SQL External Data Sources JDBC官方实现写测试
通过Spark SQL External Data Sources JDBC实现将RDD的数据写入到MySQL数据库中. jdbc.scala重要API介绍: /** * Save this RDD ...
- Spark SQL External Data Sources JDBC简易实现
在spark1.2版本中最令我期待的功能是External Data Sources,通过该API可以直接将External Data Sources注册成一个临时表,该表可以和已经存在的表等通过sq ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(五) Data Access Application Block
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(五) Data Access Application Block 企业库数据库访问模块通过抽象工厂模式,允许用户 ...
- 解决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 ...
- 警告: 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 ...
- vue教程1-02 data里面存储数据
vue教程1-02 data里面存储数据 <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
- Weblogic多数据源(Multi Data Sources)应用实践
原创 2012年03月29日 10:55:28 标签: weblogic / 数据库 / 负载均衡 / 数据中心 / jdbc / 应用服务器 大型系统在进行数据库部署时,常常会分为主数据应用中心 ...
- JasperReports教程
JasperReports教程 Jasper报表是一个开源的Java报表引擎,是基于Java的,它没有自己的表达式语法. 由于JasperReports是一个Java类库,而不是针对最终用户,而是有针 ...
随机推荐
- SQLServer获取临时表所有列名或是否存在指定列名的方法
获取临时表中所有列名 select name from tempdb.dbo.syscolumns where id=object_id( '#TempTB') 判断临时表中是否存在指定列名 if c ...
- knockout的依赖属性dependentObservable和observable的监控的使用
1.Knockout是在下面三个核心功能是建立起来的:监控属性(Observables)和依赖跟踪(Dependency tracking) 声明式绑定(Declarative bindings) 模 ...
- POSTMAN and HTTPie to test APIs
http://blog.mashape.com/postman-httpie-test-apis/ We love working with APIs at Mashape, and we love ...
- react与redux学习资料的整理
**重点内容**React学习 1.新手入门可以访问react的官方网站,如果英语不是特别好的同学可以访问中文版的,具体链接http://reactjs.cn/react/index.html 首页有 ...
- jquery重置html form
很多时候在ajax提交或者对话框隐藏之后,我们希望重置默认值以便下次打开对话框时保持干净. 因为jquery选择器返回的是list,并且没有对此提供reset方法,所以需要针对单个元素进行reset. ...
- R语言归一化处理
归一化化就是要把你需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内.首先归一化是为了后面数据处理的方便,其次是保正程序运行时收敛加快. R语言中的归一化函数:scale 数据归一化包括 ...
- inherit与auto
大家是不是和我一样,在刚开始学习css的时候,在css文件开头是不是经常看到这样的代码: * {margin:0 px; padding:0 px;} . 在接下来设置颜色字体时在body元素的cs ...
- 汉化入门之ExplorerControls
第一次汉化,高手勿喷. 01.问题描述 在ArcGIS中有个添加数据窗口,如果在应用程序中直接调用它,则风格一致性则存在问题,很多时间我们都自定义添加数据窗口,我曾经也尝试过.详见ExplorerCo ...
- Mssql链接mysql数据库
最近在做mysql数据库实时同步到mssql数据库的方案,花了一周时间,测试通过了,在实际机器上测试出现了若干问题.第一个问题就是在mssql上链接mysql的问题. 第一步,安装 Mysql ODB ...
- Android studio 启动时出现Android studio was unable to create a local connection in order
在进入后adb无法连接,并且报错 Internal HTTP server disabled: Cannot start internal HTTP server. Git …… 各种百度没有答案,最 ...