使用N + 1个分组数据集进行报告

时间:2016-07-26 10:54:36

标签: java jasper-reports

据我了解,我们可以在jasper报告中按列对数据集进行分组。但这需要分组过程由jasper报告本身完成。

例如,使用这些购买的数据集:

1. Peanut Butter, qty is 100, priced at 1000
2. Peanut Butter, qty is 10, priced at 1200
3. Blueberry Jam, qty is 20, priced at 3000

如果我要告诉jasper按项目名称分组,然后我将我的数据集传递给jasper作为地图对象列表,如:

[
  { name: 'Peanut Butter', qty: 100,price: 1000},
  { name: 'Peanut Butter', qty: 10,price: 1200},
  { name: 'Blueberry Jam', qty: 20,price: 3000}
]

jasper的渲染输出将变为:

Peanut Butter
  100    1000
  10     1200
Blueberry Jam
  20     3000

如果我想在数据库中执行分组过程,即使它意味着执行许多查询,并将已经分组的数据集(包括嵌套分组)传递给jasper报告以填充并将其呈现为“分组”列,该怎么办? ?

因此,我在数据库中的查询和分组将生成一个看起来像地图的数据集,其中键是“分组”列[s],值是记录的地图,类似于:

{
  Peanut Butter: [
    { qty: 100,price: 1000},
    { qty: 10,price: 1200}
  ],
  Blueberry Jam: [
    { qty: 20,price: 3000},
  ]
}

然后将此数据集“以某种方式”传递给jasper报告引擎,并告诉jasper逐项分组。我对jasper的期望会以相同的方式呈现输出,但它会“跳过”对数据进行分组,并且只使用我传递的“分组”数据集。

这样我可以利用我的数据库进行查询和分组,但仍然保留报表输出中的组渲染。由于jasper没有排序,在内存中对数据进行分组,我还希望报告填充过程更快。

我已经看了一眼JRDataSource,但似乎我不能覆盖'分组'数据的数据源impl,或以某种方式传递已经分组的数据,所以我想知道这是否可能实现。

0 个答案:

没有答案