技术开发 频道

JasperReports快速入门

接着我们来做一个稍为复杂些的应用,这个报表以JDBC的方式获取数据。

JDBC数据源报表

重点还是JRXML文件:
<?xml version="1.0"?>
<!DOCTYPE jasperReport
PUBLIC "-//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport name="DbReport">
<parameter name="reportTitle" class="java.lang.String"/>
<parameter name="author" class="java.lang.String"/>
<parameter name="startDate" class="java.lang.String"/>
<queryString>
<![CDATA[SELECT * FROM user ORDER BY id]]>
</queryString>
<field name="id" class="java.lang.Integer"/>
<field name="email" class="java.lang.String"/>
<field name="password" class="java.lang.String"/>
<title>
<band height="60">
<textField>
<reportElement x="0" y="10" width="500" height="40"/>
<textElement textAlignment="Center">
<font size="24"/>
</textElement>
<textFieldExpression class="java.lang.String">
<![CDATA[$P{reportTitle}]]>
</textFieldExpression>
</textField>
<textField>
<reportElement x="0" y="40" width="500" height="20"/>
<textElement textAlignment="Center"/>
<textFieldExpression class="java.lang.String">
<![CDATA["Create by: " + $P{author}
+ " on " + $P{startDate}]]>
</textFieldExpression>
</textField>
</band>
</title>

<columnHeader>
<band height="30">
<rectangle>
<reportElement x="0" y="0" width="500" height="25"/>
<graphicElement/>
</rectangle>
<staticText>
<reportElement x="5" y="5" width="50" height="15"/>
<textElement/>
<text><![CDATA[ID]]></text>
</staticText>
<staticText>
<reportElement x="55" y="5" width="150" height="15"/>
<text><![CDATA[Email]]></text>
</staticText>
<staticText>
<reportElement x="205" y="5" width="255" height="15"/>
<text><![CDATA[Password]]></text>
</staticText>
</band>
</columnHeader>

<detail>
<band height="20">
<textField>
<reportElement x="5" y="0" width="50" height="15"/>
<textElement/>
<textFieldExpression class="java.lang.Integer">
<![CDATA[$F{id}]]>
</textFieldExpression>
</textField>
<textField>
<reportElement x="55" y="0" width="150" height="15"/>
<textElement/>
<textFieldExpression class="java.lang.String">
<![CDATA[$F{email}]]>
</textFieldExpression>
</textField>
<textField>
<reportElement x="205" y="0" width="255" height="15"/>
<textElement/>
<textFieldExpression class="java.lang.String">
<![CDATA[$F{password}]]>
</textFieldExpression>
</textField>
</band>
</detail>
</jasperReport>

这个示例与HelloWorld的主要区别,在于黑体部分。
<queryString>
<![CDATA[SELECT * FROM user ORDER BY id]]>
</queryString>

这里定义了从user表中查询数据的SQL语句,user表中包含id, email和password三个字段;
<field name="id" class="java.lang.Integer"/>

用于定义user表中的字段;
<textFieldExpression class="java.lang.Integer">
<![CDATA[$F{id}]]>

这是将查询出的对应字段的数据填充到报表中。
0
相关文章