最近在项目中需要用到报表功能,要求能灵活配置,而不是每次要生成报表都要写代码。调研了网上各种报表插件,发现各有千秋,但是最适合java项目的还是UReport2这个报表框架,我们项目后台框架是基于SpringBoot、SpringCloud框架搭建的微服务架构,下面介绍一下如何在Springboot架构中引入ureport2。
一.基础配置
1、我的spring boot版本是2.1.12, ureport2版本是2.2.9,mySQL链接版本是5.1.46,maven依赖如下:
com.bstek.ureport
ureport2-console
2.2.9
mysql
mysql-connector-java
5.1.46
注:mySQL版本不能过高也不能太低,因spring boot版本不同,所以会在配置报表数据源的时候出现很多问题。
2、配置 UReport2 需要使用到的servlet,建UreportConfig配置类。
@Configuration
@ImportResource("classpath:ureport-console-context.xml")
public class UreportConfig {
/**
* 进行注册Servlet
* 配置 UReport2 需要使用到的servlet
* @return
*/
@Bean
public ServletRegistrationBean buildUReportServlet() {
/*
* @param servlet
* @param urlMappings 值为“/ureport/*”的 urlMappings 是一定不能变的,否则系统将无法运行。
*/
return new ServletRegistrationBean(new UReportServlet(), "/ureport/*");
}
}
3、启动spring boot项目,ureport地址为ureport/designer。
在本地浏览器输入http://localhost:8080/ureport/designer,打开后如下图所示。
4、修改保存报表默认路径。
在resource目录下新建ureport.properties文件,在文件中加入ureport.fileStoreDir=(实际路径,此路径要必须存在,否则会报错),修改完成后重启后保存的报表都会存在此路径下。
二、内置数据源配置
1、内置数据源需要实现ureport的内置接口BuildinDatasource。
@Component
public class UreportBuildDatasource implements BuildinDatasource {
private static final String NAME = "MyDataSource";
@Autowired
private DataSource dataSource;
@Override
public String name() {
return NAME;
}
@Override
public Connection getConnection() {
try {
return dataSource.getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
2、实现BuildinDatasource接口后,必须要确定自己的数据源已经配置完成。在application.yml文件中加入数据源配置。
#数据库连接
spring:
datasource:
url: jdbc:mysql://localhost:3306/test_ureport?useUnicode=true&characterEncoding=UTF-8&useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
配置完成后重启项目,打开报表,点击添加内置数据源链接,便可看见我们刚配置的默认数据源MyDataSource ,接下来就可以开始配置报表了。