新一篇: 中国报表漫谈--精典的帖子(转)
杰表设计器除了对jdbc、csv、javabean及xml数据集的支持外也支持hibernate。如果你的系统采用hibernate作为数据层,那么你将可以直接利用hibernate的数据对象(model)作为数据源,以下是对杰表设计器与Hibernate做为数据集的一个实例的详解:
本示例是展示各省各市发展情况,表结构如下所示:
1. CREATE   TABLE   IF   NOT   EXISTS  Province( Guid  INT  NOT   NULL  AUTO_INCREMENT,
name  VARCHAR ( 50 )  NOT   NULL ,PRIMARY   KEY  (Guid)) TYPE = InnoDB;
2. CREATE   TABLE   IF   NOT   EXISTS  City(Guid  INT NOT   NULL  AUTO_INCREMENT,
name  VARCHAR ( 50 )   NOT   NULL ,Area VARCHAR (50),Population VARCHAR (50),
GDP VARCHAR(10),ProvinceID   INT  NOT   NULL ,PRIMARY   KEY  (Guid)) TYPE = InnoDB;
3. ALTER   TABLE  City  ADD   CONSTRAINT  CityRFProvince  FOREIGN   KEY  (ProvinceID) 
REFERENCES  Province (Guid)  ON   DELETE   CASCADE   ON   UPDATE   RESTRICT ;

Province表做为主控方,City表做为被控方,两者之间是单向的一对多关系。用hibernate工具生成的Province.hbm.xml及City.hbm.xml文件及model,生成后目录如图1-1所示: 
 [img]http://p.blog.csdn.net/images/p_blog_csdn_net/chl2008/image013.jpg[/img]
                                   图(1-1) 
其中Province.hbm.xml代码如下所示:
Province.hbm.xml
. . .
<class name="com.jatools.test.Province" table="province" catalog="hib_test">
        <id name="guid" type="java.lang.Integer">
         <column name="Guid" /> <generator class="assigned" />  </id>
        <property name="name" type="java.lang.String">
            <column name="name" length="50" not-null="true" />
        </property>
        <set name="cities" inverse="true">
            <key> <column name="ProvinceID" not-null="true" /> </key>
            <one-to-many class="com.jatools.test.City" />
        </set>
</class>
. . .

其中City.hbm.xml代码如下所示:
    City.hbm.xml  
  .   .   .
  <class name="com.jatools.test.City" table="city" catalog="hib_test">
        <id name="guid" type="java.lang.Integer">
            <column name="Guid" />
            <generator class="assigned" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="name" length="50" />
        </property>
        <property name="area" type="java.lang.String">
            <column name="Area" length="50" />
        </property>
        <property name="population" type="java.lang.String">
            <column name="Population" length="50" />
        </property>
        <property name="gdp" type="java.lang.String">
            <column name="GDP" length="10" />
        </property>
    </class>
  .   .   .
Model及配制文件都弄好了后我们看一下Hibernate的配置文件hibernate.cfg.xml的内容,如下所示:
hibernate.cfg.xml
. . .
<property name="connection.username">root</property>
        <property name="connection.url">
            jdbc:mysql://127.0.0.1:3306/hib_test
        </property>
        <property name="dialect">
            org.hibernate.dialect.MySQLDialect
        </property>
        <property name="myeclipse.connection.profile">mysql</property>
        <property name="connection.password">123456</property>
        <property name="connection.driver_class">
            com.mysql.jdbc.Driver
        </property>
        <mapping resource="com/jatools/test/Province.hbm.xml" />
        <mapping resource="com/jatools/test/City.hbm.xml" />

这时你完成了以上的所有操作,那么现在可以编写Action类了,如下所示:
public class ProvinceAction......{
public static List getList()......{
        Session session=HibernateSessionFactory.getSession();
        Query query=session.createQuery("from Province");
        List list=query.list();
        return list;
    }
}//本类主要是产生list对象本返回

现在我们开始杰表设计器与hibernate的集成:
1.我们将图1-1所示目录打成jar包(test.jar)
2.将test.jar复制到杰表设计器目录下的lib目录下
3.将hibernate.cfg.xml配制文件复制到杰表设计下bin目录下
完成以上三步操作我们就完成了杰表设计器和hibernate的整合,以下我们开始把这个示例用杰表展示出来,
具体操作如下所示:
 1.打开杰表设计器,新建一个空白的报表,然后右键单击右侧的root目录选择添加java数据选项.
   这时会弹出窗口如图1-2所示:
[img]http://p.blog.csdn.net/images/p_blog_csdn_net/chl2008/image003.png[/img]
                    图(1-2)
[img]http://p.blog.csdn.net/images/p_blog_csdn_net/chl2008/image005.png[/img]
                                   图(1-3)
2.在打开图(1-2)窗口后我们添加两个嵌套数据,公式定义及名称如图(1-2),图(1-3)所示,添加后的目录如图(1-4)所示:
[img]http://p.blog.csdn.net/images/p_blog_csdn_net/chl2008/image007.png[/img]
         图(1-4)
  
这时在左侧报表设计区内添加一个表格,做如图(1-5)的设置
[img]http://p.blog.csdn.net/images/p_blog_csdn_net/chl2008/image009.png[/img]
  
好了,这时所有的操作的完成,让我们看看他的显示效果吧:
 [img]http://p.blog.csdn.net/images/p_blog_csdn_net/chl2008/image018.jpg[/img]
杰表设计器是一款功能非常强大的报表设计器,他除了支持jdbc、csv、javabean及xml数据集外,还对hibernate进行了扩充,如果你的系统用了hibernate那么你将可以直接用杰表设计器引用你的hibernate制作报表,详情请登录http://www.jatools.com查阅。联系方式:QQ-332400035 e-mail:505bai@163.com