多语言展示
当前在线:1211今日阅读:176今日分享:34

秒级展现的百万级大清单报表怎么做

数据查询业务中,有时会碰到数据量很大的清单报表。用户输入的查询条件很宽泛,可能会从数据库中查出几百上千万行甚至过亿的记录,如银行的流水记录,物流的明细等。如果等着把这些记录全部检索出来再生成报表呈现,那需要很长时间,用户体验恶劣;而且报表一般采用内存运算机制,大多数情况下也装不下这么多数据。所以,我们一般都是使用分页呈现的方式,尽量快速地呈现出第一页,然后可以随意翻页显示,每次只显示一页,也不会造成内存溢出。我们使用的润乾报表,取数和呈现采用两个异步线程,取数线程发出SQL后不断取出数据并缓存到本地,呈现线程从本地缓存取数据显示。这样,只要已经取过的数据就能快速呈现,不会有等待感;而取数线程只涉及一句SQL,在数据库中是同一个事务,也不会有不一致的问题
工具/原料

润乾报表

方法/步骤
1

与普通报表开发一样,设置参数、准备数据集、绘制报表模板。报表参数为查询日期起止:

2

数据集根据参数查询订单表SQL:

3

报表模板:

4

在润乾报表属性(报表-报表属性)中设置“大数据集名称”,指向数据集ds1。

5

设置完成后,在报表设计器IDE中即可浏览报表:

6

与普通报表发布类似,大清单报表也通过JSP以tag-lib的方式发布。其中rowNumPerPage属性为每页显示记录数;fetchSize为每次从数据源读取的数据量。完整发布JSP可参考报表安装目录下[report\web\webapps\demo\reportJsp\ showBigReport.jsp]。

7

最终 WEB端呈现效果:其中,右上角的页码和总记录条数随着异步线程不断读取数据而不断变化。

8

除了展现,在润乾报表中还支持对大清单报表导出Excel

9

以及打印,

推荐信息