对于birt布局展现部分就不说了,大致看一下就知道,但是数据源这个方面用过的人应该都有些麻烦,
1,用jdbc只能通过sql语句查询的结果填充到表中,如果一条语句不能解决问题,或者需要写很复杂的sql语句也是不容易
2,使用scripted data source 这个可以解决上面的问题,但是具体怎么用,在现在spring mvc比较流行的时代,如何获取由spring管理的dao来查询数据
首先看下如何使用scripted data source

选择 后命名 Finish就可以了
然后就是新建Data sets ,选择刚刚的名称命名,下一步

此时出现的页面主要是填写一些 名称-类型-别名-显示名这样的数据,那么相应的为 row["name"] --数据的类型---别名应该和第一个一样,就是换种标识方法,显示名就是在table中展现出来的,主要填写1,2,4即可
确定后在中间的窗口弹出了script的脚本编辑页面,
最上面有个script【---------】可以选择脚本执行的时期,我们选择open
然后就是在里面写脚本,当然在此之前,我们写一下通过java代码生成数据的方法
有些例子从网上找的,如下
//实体
package com.birt.entity;
public class Contact {
private String name;
private String phone;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
= name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}具体获取数据的方法:
package com.birt.factory;
import java.util.ArrayList;
import java.util.List;
import com.birt.entity.Contact;
public class ContactDataFactory {
public List<Contact> createContactList(){
List<Contact> contacts = new ArrayList<Contact>();
Contact contact1 = new Contact();
contact1.setName("tom");
contact1.setPhone("1334");
contact1.setAddress("beijing");
Contact contact2 = new Contact();
contact2.setName("jack");
contact2.setPhone("1552");
contact2.setAddress("shanghai");
Contact contact3 = new Contact();
contact3.setName("rose");
contact3.setPhone("1111");
contact3.setAddress("tianjing");
contacts.add(contact1);
contacts.add(contact2);
contacts.add(contact3);
return contacts;
}
}那么现在写script脚本:
//importPackage(com.birt.factory);
count = 0
factory = new Packages.com.birt.factory.ContactDataFactory();
//factory = new ContactDataFactory();
contacts = factory.createContactList();这样首先是 new Packages.包名.类名();之后是调用类对应的方法就行(不用定义contacts,就是全局变量了)
将script【fetch】
if(count<contacts.size()){
row["name"] = contacts.get(count).getName();
row["phone"] = contacts.get(count).getPhone();
row["address"] = contacts.get(count).getAddress();
count++;
return true;
}
return false;这里row[“name”]就是上面的名称,后面就和java代码一样遍历了,最后必须有return
最后一步就是讲数据展示出来了layout标签

页面效果

简单的例子大致就是这样了;
由于我用的是birt-report-designer-all-in-one-4.5.0-20150619-win32-win32-x86相当于一个eclipse,直接再里面建java项目写代码,新建report文件,最有直接运行就可以了,不需要想着怎么把birt集成到项目中去,所以就没有写相关的内容,下一次就是birt和spring mvc了
有一个疑问,在script【open】里面的脚步,有两种方式 一种是导入包 new class();调用方法,还有一种是直接 new Packages.包.class();调用方法,那么这个地方new 是不是都是从新建了一个对象呢,这个疑问可能一直在spring mvc中也会有.........因为Dao有spring管理,如果是new DAO(),那么相应的依赖注入不就全部失效了。。。。。
















