如何从 springboot ireport 中的 application.properties 获取 MySQL 连接



目前我正在使用这段代码来生成ireport。但是我需要直接从 application.properties 获取数据源,因为我不想再次将用户名和密码用于 sql 连接。

File file = ResourceUtils.getFile("classpath:report/collectorInvoice.jrxml");
InputStream input = new FileInputStream(file);
// Compile the Jasper report from .jrxml to .japser
JasperReport jasperReport = JasperCompileManager.compileReport(input);
conn = DriverManager.getConnection("jdbc:mysql://localhost/divron?createDatabaseIfNotExist=true&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC","aha","123");
// Get the parameter
Map<String, Object> parameters = new HashMap<>();
parameters.put("invoiceId",id);
try (Connection connection = dataSource.getConnection()) {
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, conn);
// Export the report to a PDF file
JasperExportManager.exportReportToPdfFile(jasperPrint, "D://" +"collectorInvoice -"+ id + ".pdf");
}
return new ResponseEntity<Object>(null, HttpStatus.OK);

这是应该更改的代码。

conn = DriverManager.getConnection("jdbc:mysql://localhost/divron?createDatabaseIfNotExist=true&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC","aha","123");

因此,请帮助我从sql连接中获取整个数据,而无需再次使用sql连接的用户名和密码。

如果 Spring 引导已经创建了数据源,您可以在 Bean 中自动连接它(或使用其他注入方式(并使用来自数据源的连接

@Autowired
DataSource dataSource;
....
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource.getConnection());

最新更新