据我了解,我们可以在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,或以某种方式传递已经分组的数据,所以我想知道这是否可能实现。