分页计算标签autoBig使用介绍

海量数据的清单式列表在读取、展现及导出过程中可能会出现速度过慢、内存溢出、系统死机等问题,润乾提供了分页计算的方式发布报表。我们更多熟悉的应该是使用extHtml标签发布报表,实现分页计算的功能,随着客户需求不断变化,extHtml在有些方面已经显得力不从心,所以今天这里将介绍润乾报表提供的另外一个分页计算标签:autoBig

简介

autoBig与传统的extHtml标签的区别主要在于如下几个属性:

dbType=”oracle” //新增,数据库类型,取值可参考下表,未知写unknown

dsName=”ds1″ //新增,要分页的数据集名称,如果是报表中的第一个数据集,可不指定

totalCountExp=”" //总条数表达式,可不写,默认用数据集的SQL

pageCount=”10″ //每一页的记录数

cachePageNum=”5″ //缓存页数

……除startRowParamNameendRowParamName该标签中没有外,其余与extHtml相同

注意:由于autoBig中不再使用startRowParamName endRowParamName,所以在报表中也不必再增加起始行参数名startRow和结束行参数名endRow

autoBig比起extHtml的有点在于使得totalCountExp不再必需,可以自由使用数据集记录数,这将极大地减少用户在页面计算总记录条数的工作量。

实例

首先做一张普通的网格式清单报表,如下

在发布报表的jsp中增加如下代码片段:

<report:autoBig

name=”report1″

reportFileName=”<%=report%>”

dbType=”unknown”

dsName=”ds1″

totalCountExp=”"

pageCount=”10″

cachePageNum=”5″

/>

配置reportConfig.xml文件中alwaysReloadDefineno,启用缓存。此项设置的目的是使得设置的缓存页数cachePageNum生效。

访问该页面,显示如下

点击下一页,从第一页翻到第六页,并观察后台打印信息:

[2011-04-25 10:13:22] runqianReportLogger : [DEBUG]现在计算报表autoBig.raq

[Server@1478a43]: [Thread[HSQLDB Server @1478a43,5,main]]: handleConnection(Socket[addr=/127.0.0.1,port=52685,localport=9001]) entered

[Server@1478a43]: [Thread[HSQLDB Server @1478a43,5,main]]: handleConnection() exited

[Server@1478a43]: [Thread[HSQLDB Connection @1f2e95f,5,HSQLDB Connections @1478a43]]: 5:trying to connect user SA

[Server@1478a43]: 5:SQLCLI:SQLPREPARE select count(*) from ( SELECT * FROM 订单 )

[Server@1478a43]: 5:SQLCLI:SQLEXECUTE:6

[Server@1478a43]: 5:SQLCLI:SQLFREESTMT:6

[2011-04-25 10:13:22] runqianReportLogger : [DEBUG]开始生成HTML……

[2011-04-25 10:13:22] runqianReportLogger : [DEBUG]生成HTML结束……

[2011-04-25 10:13:22] runqianReportLogger : [DEBUG]报表组生成开始。。。。。

[2011-04-25 10:13:22] runqianReportLogger : [DEBUG]报表组生成结束。。。。。。

[2011-04-25 10:13:56] runqianReportLogger : [DEBUG]现在计算报表autoBig.raq

[2011-04-25 10:13:56] runqianReportLogger : [DEBUG]开始生成HTML……

[2011-04-25 10:13:56] runqianReportLogger : [DEBUG]生成HTML结束……

[2011-04-25 10:13:59] runqianReportLogger : [DEBUG]现在计算报表autoBig.raq

[2011-04-25 10:13:59] runqianReportLogger : [DEBUG]开始生成HTML……

[2011-04-25 10:13:59] runqianReportLogger : [DEBUG]生成HTML结束……

[2011-04-25 10:14:02] runqianReportLogger : [DEBUG]现在计算报表autoBig.raq

[2011-04-25 10:14:02] runqianReportLogger : [DEBUG]开始生成HTML……

[2011-04-25 10:14:02] runqianReportLogger : [DEBUG]生成HTML结束……

[2011-04-25 10:14:05] runqianReportLogger : [DEBUG]现在计算报表autoBig.raq

[2011-04-25 10:14:05] runqianReportLogger : [DEBUG]开始生成HTML……

[2011-04-25 10:14:05] runqianReportLogger : [DEBUG]生成HTML结束……

[2011-04-25 10:14:08] runqianReportLogger : [DEBUG]现在计算报表autoBig.raq

[2011-04-25 10:14:08] runqianReportLogger : [INFO ]开始运算报表,首先取数……

[Server@1478a43]: [Thread[HSQLDB Server @1478a43,5,main]]: handleConnection(Socket[addr=/127.0.0.1,port=52724,localport=9001]) entered

[Server@1478a43]: [Thread[HSQLDB Server @1478a43,5,main]]: handleConnection() exited

[Server@1478a43]: [Thread[HSQLDB Connection @7b4ed7,5,HSQLDB Connections @1478a43]]: 6:trying to connect user SA

[Server@1478a43]: [Thread[HSQLDB Connection @1f2e95f,5,HSQLDB Connections @1478a43]]: 5:disconnected SA

[Server@1478a43]: 6:SQLCLI:SQLPREPARE SELECT * FROM 订单

[Server@1478a43]: 6:SQLCLI:SQLEXECUTE:7

[2011-04-25 10:14:08] runqianReportLogger : [DEBUG]下面开始打出sql

[2011-04-25 10:14:08] runqianReportLogger : [DEBUG] – ds1=SELECT * FROM 订单

[Server@1478a43]: 6:SQLCLI:SQLFREESTMT:7

[2011-04-25 10:14:08] runqianReportLogger : [INFO ]取数结束,开始运算

[2011-04-25 10:14:08] runqianReportLogger : [INFO ]计算结束:

[2011-04-25 10:14:08] runqianReportLogger : [DEBUG]开始生成HTML……

[2011-04-25 10:14:08] runqianReportLogger : [DEBUG]生成HTML结束……

观察中我们可以看到,当从第一页翻到第五页时,后台并没有打印取数sql,是因为从缓存取数的原因;当翻到第六页时,看到完整的取数sql,说明我们设置的缓存页数5cachePageNum=”5″)生效。

热门文章