首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Java/JSP/Servlet生成Jasper报告的最佳方法

使用Java/JSP/Servlet生成Jasper报告的最佳方法
EN

Stack Overflow用户
提问于 2015-11-09 08:06:05
回答 3查看 1.2K关注 0票数 0

场景-用户输入(日期范围、报表类型)从JSP页面获取并传递到servlet,然后传递到java。

我想问我是否应该-

  1. 在java中使用mysql查询&然后使用Hashmap将值放入jasper中?或
  2. 在jasper中使用mysql查询&只需使用java提供数据连接?

主要关注的是哪种方法在性能、健壮性、未来变化方面更好?

EN

回答 3

Stack Overflow用户

发布于 2015-11-09 08:43:53

你的问题太笼统了。你的方法和商业模式是什么?如果您的查询如此复杂,那么在jasper中直接使用sql似乎更好,而且它将比使用jasper中的值生成报告更快。但是在编程范例中,只有一个模块需要了解数据库连接,那就是程序的域部分。我希望不要在jasper配置中初始化数据库连接,所以只需在jasper中使用值并使用Hashmap映射它们。您可以在程序中使用以前的连接和数据库模块(用于实体或域对象的模块),并获取所需数据并将它们映射到报表中。

票数 0
EN

Stack Overflow用户

发布于 2015-11-09 12:31:37

在java中使用mysql查询&然后使用Hashmap将值放入jasper中?

这听起来很疯狂,纯Hashmap并不是数据源,因此您将无法在其上进行迭代。

你的解决办法可以是:

  1. 在java中使用mysql查询&然后将值放在JRDatasource中,将数据源传递给jasper报告
  2. 在jasper中使用mysql查询&只需使用java提供数据连接
  3. 在java中生成mysql查询,并将查询和数据连接传递到jasper报告
  4. 我要使用的唯一场景是,当数据不能以简单的方式从单个查询中提取时,所有数据都不能在查询中使用,或者数据已经在内存中可用(es )。用户已在表中选择行)。
  5. 在开发报表时,这是“正常的”,也可能是最快的工具,比如iReport,它使您可以自动从查询中提取字段,并通过实时数据连接预览报表(不需要编译和运行代码)。这样,报告的开发人员在大型项目中也非常有用。
  6. 当查询获得复杂位置(取决于多个变量)时,查询可以作为参数(或多个参数)直接传递。在报表中,查询的默认表达式可以使用为2。

所以通常使用metod 2.

性能:如果数据已经在内存1中更快(没有sql),那么您可能只会包含更多的内存(因此,当您加载一个JRDataSource时)。然而,我没有做任何广泛的测试。

健壮性,更多地取决于您的代码,而不是使用的方法。

将来的更改,2的优点是只在一个地方更改“报表”,您甚至不需要打开java项目。

票数 0
EN

Stack Overflow用户

发布于 2015-11-10 09:07:08

如果我的理解是正确的,应用程序已经为报告选择了用户筛选器。这些筛选条件在HTTP请求中传递给应用程序,您希望在

  1. 在jrxml设计文件中提供< queryString >中的查询和字段映射,仅在条件参数从java传递时才需要
  2. 在java中实现报表内容检索,并将java bean传递给jrmxl文件。

我建议与项目的总体后端设计策略保持一致,以便从DB获取数据。

如果您的报告相对简单,并且应用程序已经有了成熟的ORM实现,那么可以使用第二种方法。在最初的实现以及未来任何变更请求的实现中,这将是相对简单的。

如果不是这种情况,并且生成报告的sql查询是动态的和相当复杂的,我仍然建议继续使用选项2。

  • 用java编写用于报表数据检索的查询(String),或将其作为DB中的函数/过程维护。
  • 填充java bean集合并将其传递给jasper报表引擎。

只要应用程序运行在具有良好规格的应用服务器上,这两种方法都可能没有任何显著的性能差异。如果性能是关键的,并且当前资源有限,我建议在单独的JVM中以单独的应用程序运行报表--单独的报表和app db服务器,并使用DB复制工具对它们之间的数据进行同步。生成庞大的复杂报告往往会大大降低应用程序的性能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33604778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档