1、新建report1.jrxml文件不在赘述
2、调出组件面板:注意如果没有服务面板可以在窗口-->服务面板,调出来
3、各种面板上的元素属性不在赘述
4、数据源配置—连接数据库(DB2)
在这里为什么值描述DB2呢?因为其他的数据库连接都很简单,唯独DB2有坑,上图红框里面的东西,不管irport怎么提示你,直接手动输入红框的内容,但是URL必须改为你自己的数据库连接。DB2驱动类型有4种Type1,Type2,Type3,Type4,其中的区别可以自己百度,有很多说明,这里要说明的是,ireport提示的是:com.ibm.db2.app.DB2Driver,但是我们不用管,只要手工输入com.ibm.db2.jcc.DB2Driver即可。否则会提示无法连接,还有各种莫名其妙的错误。网上说的什么必须安装客户端才能连接如此之类的,无需考虑(注意:仅限ireport)
5、数据源配置—JavaBean
1)在下图进行配置数据源,配置好了点击test测试一下是否成功
2)根据配置的数据源读取属性与值
3)把table组件拖到面板后方式text
说明:Filed是从JavaBean这个KpiMajorProdIndusAllBO导入的,paramer是自己新建的,自己命名,需要与外部Model对应
比如我在我的controller层新建一个返回方法,这里是为了说明在测试或者生成环境如何返回数据,如果我们平时开发代码完全可以使用JavaBean作为数据源忽略此处:代码片段为:
Model里面属性参数作为外部传递到ireport的,参数就是沟通外部与irport的桥梁;直接对应ireport里面的paramer节点下,自定义的参数
4)为了说明如何使用ireport的参数,需要新建工厂类:KpiMajorProdIndusAllBOFactory
public class KpiMajorProdIndusAllBOFactory {
// 生成实体对象的个数
private static final int RECORD_COUNT = 10;
/**
* 这个方法在iReport的DataResource配置时也会用到 必须是静态方法 static
*
* @return
*/
public static Collection<KpiMajorProdIndusAllBO> createBeanCollection() {
Collection<KpiMajorProdIndusAllBO> beanCollection = new ArrayList<KpiMajorProdIndusAllBO>();
for (int i = 0; i < RECORD_COUNT; i++) {
KpiMajorProdIndusAllBO kpiMajorProdIndusAllBO = new KpiMajorProdIndusAllBO();
beanCollection.add(kpiMajorProdIndusAllBO);
}
return beanCollection;
}
}
5)生成业务BEAN
public class KpiMajorProdIndusAllBO { private String statDate = "999"; private int num; private String indexCode = "999"; private String indexName = "999"; private String ytmDataValue = "999"; private String lyYtmDataValue = "999"; private String yoyYtmDataValue = "999"; private String quoYtmDataValue = "999"; public KpiMajorProdIndusAllBO() { } public String getStatDate() { return statDate; } public void setStatDate(String statDate) { this.statDate = statDate; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public String getIndexCode() { return indexCode; } public void setIndexCode(String indexCode) { this.indexCode = indexCode; } public String getIndexName() { return indexName; } public void setIndexName(String indexName) { this.indexName = indexName; } public String getYtmDataValue() { return ytmDataValue; } public void setYtmDataValue(String ytmDataValue) { this.ytmDataValue = ytmDataValue; } public String getLyYtmDataValue() { return lyYtmDataValue; } public void setLyYtmDataValue(String lyYtmDataValue) { this.lyYtmDataValue = lyYtmDataValue; } public String getYoyYtmDataValue() { return yoyYtmDataValue; } public void setYoyYtmDataValue(String yoyYtmDataValue) { this.yoyYtmDataValue = yoyYtmDataValue; } public String getQuoYtmDataValue() { return quoYtmDataValue; } public void setQuoYtmDataValue(String quoYtmDataValue) { this.quoYtmDataValue = quoYtmDataValue; } }