千万级别的数据,如果等全部取出算完再呈现,须要很永劫光,没有人可以接管这么恶劣的用户体验,而且还有其余一个限定成分,便是报表大都是内存打算的,做事器的内存是有限的,一次装不下这么多数据,都得溢出

以是就须要有专门来处理大清单报表的功能和机制才可以

1 选一个得当的报表工具

这个功能完备自己做就太难了,以是要选一个报表工具

jsp统计div数目年夜清单报表该怎么做 SQL

所有报表和 BI 厂商都号称自己可以做,但大多数的做法都是用数据分页

这会带来这样的问题:

数据库分页不仅有这些弊端,而且程序代码和对应的数据库是强耦合的,万一换了数据源,那还得重新做一遍

这里有更详细的利弊剖析:

大清单报表应该怎么做? - 乾学院

那么该当怎么做才好:

更好的方法是:把取数和呈现做现两个异步线程,取数线程发出 SQL 后就不断取出数据后缓存到本地存储中,呈现线程根据页数打算出行数到本地缓存中去获取数据显示

这样做就可以把前面提到弊端从根本上全部办理掉了

1 只要已经取过的数据就能快速呈现,不会有等待感

2 取数线程只涉及一句 SQL,在数据库中是同一个事务,也不会有不一致的问题

目前貌似就润乾报表是这么实现的,大概也就只能选择润乾报表了

而且,润乾报表中利用了独占的集算器开源打算平台,还能办理非 RDB 数据源以及切换数据源的问题

然后我们就用润乾报表来做一个大清单报表

2 制作报表

打开润乾报表设计器,设置数据集取数

制作报表模板

制作参数模板

制作完成后,报表就可以正常发布浏览了,但是这时候报表还只是普通报表,还没有利用大报表功能,经由下面两步后,就可以转变为大报表了

3 设置大数据集和对应标签

在 jsp 中设置标签

个中 rowNumPerPage 属性为每页显示记录数;fetchSize 为每次从数据源读取的数据量

4 浏览报表

浏览器中访问对应的 jsp,就可以看到报表了,这样一个大报表就做成了

发布之后,右上角红框中的数字会不断增大,直到所有数据都取完才会停滞

5 导出打印等

大清单报表,除了要在 web 端展示外,很多时候,还须要导出或者打印,这就哀求导出和打印功能也得分外处理才可以,否则导出和打印时候卡去世,也是很严重的问题

润乾报表专门针对大报表的导出和打印做了优化,可以顺畅打印和导出

导出

打印

更详细的制作过程可以参考: 秒级展现的百万级大清单报表怎么做 - 乾学院

本示例用的是润乾的 demo 数据库和 demo 运用来做的,用户实际制作的时候,可以先用润乾设计器设计好报表,然后把润乾标准的 j2ee 运用拷贝到自己的项目中,配置自己的数据源,就可以发布浏览了

总结

大清单报表需求虽不算普遍需求,但是却属于难度大风险高的需求,没有的时候用不到,用到的时候如果办理不了那就很难补救,以是选型的时候就要慎重考虑这一点了