`
flyingbug
  • 浏览: 130145 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[BIRT]-[Tutorial]-使用ScriptDataSet从POJO中获得数据(一)

阅读更多

在前面说明过使用Script数据源来获得web service数据源的做法,在实际操作中,发现虽然有BIRT的帮助文件,但同事对BIRTScript数据源的使用还是不太理解,于是写出下文以便帮助使用BIRT的高级特性

<!----><o:p> </o:p>

熟悉了BIRTScript数据源之后,你会感叹BIRT功能之强大,BIRT团队承诺在2.0中加入对数据库连接池的支持,但目前为止,我们还只能通过Script数据源来支持连接池。

<o:p> </o:p>

为了能够自定义数据集合以及支持分页查询、多表查询、数据库连接池或者在DAO中使用Spring+Hibernate或从web Service获取数据等高级特性,我们需要使用BIRTScript数据源来获得数据

下面通过一个示例说明如何使用BIRTScript数据源来通过POJO获取数据:

<o:p> </o:p>

注:<o:p></o:p>

为了使例子不至于因为过于简单而无法说明情况(如同BIRTTutorial那样),在这里我使用了一个简单但完整的DAO层,可直接在项目中使用,同时也为避免过于复杂,本例中没有使用Spring+HibernateWeb Service获得数据源,但从POJO中可很简单的将其改为SH组合或WS
<o:p>

一、一个简单的数据库访问层

<o:p> </o:p>

在开始我们浪费些时间来描述一下DAO层的几个类,以便后面在BIRT中使用它时有所了解。

首先在Eclipse中建立一个Tomcat项目,然后在src中建立一个com.bat.afp.DAOComm包用来封装一个非常简单的DAO类,如下:

<!----><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>

o_1.jpg
其中
DBUtil为数据库连接类(数据库为Oracle8),使用了DBCP作为数据库连接池,并使用XML文件(dbconfig.xml)来配置数据库连接池的信息

<o:p> </o:p>

DBUtil代码如下:

  1package com.bat.afp.DAOComm;
  2
  3import java.io.File;
  4import java.net.URL;
  5import java.sql.Connection;
  6import java.sql.DriverManager;
  7import java.sql.SQLException;
  8import org.apache.commons.dbcp.DriverManagerConnectionFactory;
  9import org.apache.commons.dbcp.PoolableConnectionFactory;
 10import org.apache.commons.dbcp.PoolingDriver;
 11import org.apache.commons.pool.impl.GenericObjectPool;
 12import org.apache.log4j.BasicConfigurator;
 13import org.apache.log4j.Logger;
 14import org.dom4j.Document;
 15import org.dom4j.DocumentException;
 16import org.dom4j.Element;
 17import org.dom4j.io.SAXReader;
 18
 19/**//**
 20 * @author liuyf
 21 */

 22public class DBUtil {
 23
 24    private static final Logger    logger        = Logger.getLogger(DBUtil.class);
 25
 26    private static DBUtil        instance;
 27
 28    private GenericObjectPool    connectionPool;
 29
 30    private static String        dbUrl;
 31
 32    private static String        user;
 33
 34    private static String        password;
 35
 36    private static int            connNumber    = 10;
 37    static
 38    {
 39        BasicConfigurator.configure();
 40        try
 41        {
 42            readConfig();
 43        }

 44        catch (DocumentException e)
 45        {
 46            e.printStackTrace();
 47        }

 48    }

 49
 50    private DBUtil()
 51    {
 52        try
 53        {
 54            initConnectionPool();
 55        }

 56        catch (SQLException e)
 57        {
 58            e.printStackTrace();
 59        }

 60        logger.debug("DBUtil init");
 61    }

 62
 63    /**//**
 64     * 读取配置文件
 65     * 
 66     * @throws DocumentException
 67     */

 68    private static void readConfig() throws DocumentException
 69    {
 70        URL url = DBUtil.class.getClassLoader().getResource("dbconfig.xml");
 71        File file = new File(url.getFile());
 72        // File file = new File("dbconfig.xml");
 73        SAXReader reader = new SAXReader();
 74        Document document = reader.read(file);
 75        Element root = document.getRootElement();
 76        Element dbinfo = root.element("dbinfo");
 77        dbUrl = dbinfo.elementText("url");
 78        user = dbinfo.elementText("user");
 79        password = dbinfo.elementText("pwd");
 80        String numStr = dbinfo.elementText("connNumber");
 81        if (numStr != null)
 82            connNumber = Integer.parseInt(numStr);
 83    }

 84
 85    public static DBUtil getInstance()
 86    {
 87        if (instance == null)
 88            return instance = new DBUtil();
 89        else
 90            return instance;
 91    }

 92
 93    /**//**
 94     * 
 95     */

 96    private void initConnectionPool() throws SQLException
 97    {
 98        DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
 99        connectionPool = new GenericObjectPool(null, connNumber);
100        DriverManagerConnectionFactory connectionFactory = new DriverManagerConnectionFactory(dbUrl, user,
101                password);
102        PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(
103                connectionFactory, connectionPool, nullnullfalsetrue);
104        PoolingDriver driver = new PoolingDriver();
105        driver.registerPool("afpdb", connectionPool);
106    }

107
108    public Connection getConnection() throws SQLException
109    {
110        return DriverManager.getConnection("jdbc:apache:commons:dbcp:afpdb");
111    }

112}

113
</o:p>
分享到:
评论

相关推荐

    birt-runtime-4.8.0-20180626.zip

    8. **WebViewerExample**:这是一个示例Web应用程序,演示了如何在Web环境中集成并使用BIRT报告引擎,帮助开发者了解如何在自己的项目中实施BIRT。 综合以上信息,我们可以学习到如何下载、安装和使用BIRT运行时...

    birt-jsp-tag

    "birt-jsp-tag"是关于BIRT(Business Intelligence and Reporting Tools)与JSP(JavaServer Pages)结合使用的标签库,这主要涉及到Web应用中报表生成和展示的技术。BIRT是一个开源项目,由Eclipse基金会维护,用于...

    birt-runtime2.3.1/2.3.2汉化包

    BIRT(Business Intelligence and Reporting Tools)是一款开源的报表系统,主要设计用于开发嵌入到Java应用程序中的报告。它由Eclipse基金会维护,提供了一个全面的报表解决方案,包括报告设计、数据处理和报告呈现...

    birt-runtime-4.7

    8. **WebViewerExample**: 这是一个示例Web应用程序,展示了如何在Web环境中集成BIRT报表查看器,用户可以通过这个例子学习如何在自己的Web应用中嵌入BIRT报表。 BIRT的核心组件包括设计时环境(BIRT Designer)和...

    birt-----表头排序

    在IT行业中,BIRT(Business Intelligence and Reporting Tools)是一个开源的报表系统,广泛应用于数据分析和信息展示。本文将深入探讨“birt-----表头排序”这一主题,旨在帮助你理解和掌握如何在BIRT中实现表格...

    birt-report-framework

    在这个目录中,每个子目录代表一个特定的BIRT功能或扩展,它们描述了BIRT的某些特定方面,如报表设计、数据访问或报表渲染等。 BIRT报表框架的知识点涵盖以下几个主要方面: 1. **报表设计**:BIRT提供了图形化的...

    eclipse 3.50(galileo版本)中文语言包(BabelLanguagePack-birt-zh_3.5.0.v20091121043401)

    eclipse galileo版本的中文语言包,BabelLanguagePack-birt-zh_3.5.0.v20091121043401,下载直接解压到eclipse的dropins目录,启动eclipse即可。

    解析BIRT-Eclipse商业智能和报表工具

    通过使用数据集,开发者可以定义查询来获取需要的数据,还可以对数据进行预处理,如过滤、排序和聚合。数据集可以是静态的,也可以是动态的,以适应不同的应用场景。 ### 报表呈现和交互 BIRT生成的报表可以以HTML...

    birt-runtime

    5. **设计报表**:使用BIRT的报告设计器(通常是一个单独的Eclipse插件)创建报表模板。 6. **数据绑定**:连接报表到适当的数据源,如数据库、XML文件或Web服务。 7. **报表执行**:通过Web接口或API调用,运行报表...

    birt-runtime-2.2.2

    birt报表-简单官方实例 /** * Simple BIRT Design Engine API (DEAPI) demo. */

    PyPI 官网下载 | birt-gd-0.1.21.tar.gz

    BIRT-GD(BIRT for Google Data)则是这个生态系统中的一个扩展,它旨在帮助开发者将BIRT的功能与Google Data服务相结合,实现更高效的数据分析和展示。 “birt-gd-0.1.21.tar.gz”是一个经过打包的源代码文件,...

    birt-report-framework插件

    2. **数据源支持:**BIRT支持多种数据源,包括关系型数据库、XML、Web服务等,使得报表可以从各种类型的数据中获取信息。 3. **数据集与脚本:**数据集是查询数据的逻辑单元,开发者可以编写SQL或使用内置的脚本语言...

    非常好的birt-RCP实例

    BIRT(Business Intelligence and Reporting Tools)是Eclipse基金会下的一个开源报表系统,它提供了一种强大的数据可视化和报告生成解决方案。RCP(Rich Client Platform)是Eclipse框架的一部分,用于构建复杂的...

    解析BIRT-Eclipse商业智能和报表工具(全)

    2. **业务数据分析**:对于需要对大量数据进行统计分析的场景,BIRT提供了一种简便有效的方式。 3. **Web应用报表集成**:将BIRT嵌入到Web应用中,使得用户可以在浏览器端查看动态生成的报表。 4. **移动设备支持**...

    birt-report-framework-sdk-4_4_2.part1

    eclipse开发报表的插件birt 只是一个插件,安装方法和其它eclipse插件一样

    birt_POJO作数据源

    【BIRT POJO作数据源】是BIRT报表设计中的一种高级用法,它允许开发者直接使用Java的Plain Old Java Objects (POJOs)作为报表的数据源,而非传统的数据库或其他结构化数据源。这种方式提供了更大的灵活性,特别是...

    birt的jar包

    BIRT(Business Intelligence and Reporting Tools)是Eclipse基金会下的一个开源报表系统项目,主要用于生成复杂的商业报告和数据可视化。在Java环境下,BIRT提供了一套API和可扩展的框架,使得开发者可以轻松地将...

    用pojo对象作birt的数据源

    本话题将详细讲解如何利用Java中的POJO(Plain Old Java Object)对象作为BIRT报告的数据源,从而实现更加灵活且高效的数据绑定。 首先,理解POJO的概念至关重要。POJO是一种简单的Java类,它不包含任何特殊的框架...

    spagobi-birt-report-creation

    1. **新建数据集**:在SpagoBI中,利用刚刚创建的数据源来创建一个新的数据集。数据集是报告中使用的数据集合。 2. **定义查询**:根据需要展示的数据,编写SQL查询语句来定义数据集。 #### 步骤5:创建示例报告 1....

Global site tag (gtag.js) - Google Analytics