我在我的网络应用程序中使用MongoDB作为数据库。我希望在我的应用程序中有一个报告生成功能,以便向用户显示可用记录和字段的列表,并且他/她选择所有或部分可用字段,然后生成包含用户所选数据的pdf报告领域。
因此,我需要根据用户选择的字段在运行时以编程方式生成报告。我找到了一个类似mysql here的例子。
我应该如何为MongoDB而不是MySQL添加数据源?有没有其他方法可以完成这项工作?
Connection connection = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://hostname:port/dbname","username", "password");
} catch (SQLException e) {
e.printStackTrace();
return;
} catch (ClassNotFoundException e) {
e.printStackTrace();
return;
}
JasperReportBuilder report = DynamicReports.report();
report
.columns(
Columns.column("Customer Id", "id", DataTypes.integerType()),
Columns.column("First Name", "first_name", DataTypes.stringType()),
Columns.column("Last Name", "last_name", DataTypes.stringType()),
Columns.column("Date", "date", DataTypes.dateType()))
.title(Components.text("SimpleReportExample")
.setHorizontalAlignment(HorizontalAlignment.CENTER))
.pageFooter(Components.pageXofY())
.setDataSource("SELECT id, first_name, last_name, date FROM customers",
connection);
try {
report.show();
report.toPdf(new FileOutputStream("c:/report.pdf"));
} catch (DRException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
答案 0 :(得分:0)
也许你现在已经解决了你的问题,但是对于寻找答案的其他人我反应过来了。 您可以使用JRBeanCollectionDataSource(..)进行此操作。动态报告在此创建了一个示例:http://www.dynamicreports.org/examples/collectiondatasourcereport
只需从MongoDB获取数据并将其加载到JRBeanCollectionDataSource中。然后使用setDataSource(..)
在报告上设置它