java - 如何在spring boot ireport中从applicaiton.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 Boot 已经创建了 DataSource,您可以在 Bean 中自动装配它(或使用其他注入方式)并使用来自 DataSource 的连接
@Autowired
DataSource dataSource;
....
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource.getConnection());
推荐阅读
- ruby - 在 CentOS 上安装 ruby 2.5.0 时运行“__rvm_make -j12”时出错
- r - 循环创建双变量/交叉表
- java - 如何修复错误原因:java.lang.module.InvalidModuleDescriptorException,找不到JsonFactory,如何添加?
- android - 我有一个 custom_list_view 的问题。错误就在那一行 setContentView(R.layout.activity_main);
- java - 当我在 sts 中创建 web 启动项目时,它在 pom 和 java 文件中显示错误
- c++11 - 想要定义具有相同前缀的宏列表
- php - 无法使用 PHP 按相同键对 json 对象进行排序
- ios - 我的 .ipa 中的“符号文件太多”但 dSYM 文件丢失
- google-apps-script - 我正在制作一个脚本来更新谷歌表格中的最后更新列,但我有各种表格用于添加条目
- node.js - 在mongodb中过滤2个数组后如何获取文档?