個人學習系列 - Spring Boot 整合 UReport2

周兆東發表於2020-09-23

工作中總是需要生成各種各樣的報表,麻煩的很。最近發現了一個UReport2,據說可以實現複雜的中國式報表,有點小激動。。。

1. 新建springboot專案

1.1 pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<dependency>
    <groupId>com.bstek.ureport</groupId>
    <artifactId>ureport2-console</artifactId>
    <version>2.2.9</version>
</dependency>

1.2 application.yml

server:
  port: 8888
# 資料庫連結 資料來源配置
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://IP地址:3306/資料庫名稱?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false&serverTimezone=GMT%2B8
    username: 資料庫使用者名稱
    password: 資料庫密碼

1.3 編寫config程式碼類,用於配置UReport2

/**
 * springboot實體類配置
 * context.xml為UReport2的配置檔案
 * @author zhouzhaodong
 */
@ImportResource("classpath:context.xml")
@Configuration
public class BeanConfig {

    @Bean
    public ServletRegistrationBean<Servlet> ureport2Servlet() {
        return new ServletRegistrationBean<>(new UReportServlet(), "/ureport/*");
    }

}

1.4 新建UReport2的配置檔案context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    <import resource="classpath:ureport-console-context.xml"/>
    <!-- 引入配置檔案 -->
    <bean id="propertyConfigurer" parent="ureport.props">
        <property name="location" value="classpath:context.properties"/>
    </bean>

</beans>

1.5 新建context.properties

這裡我主要是在這裡定義UReport2中提供的預設基於檔案系統的報表儲存目錄:

# 用於定義UReport2中提供的預設基於檔案系統的報表儲存目錄
ureport.fileStoreDir=src/main/resources/ureportfiles

這裡需要注意的是,我們設定在ureportfiles資料夾下面儲存報表,這個資料夾需要我們手動建立,否則無法儲存。。。

1.6 這裡需要定義內建資料來源

這裡需要注意的是資料來源連線方式有三種:

  1. 直接連線資料庫,就是在專案的classpath中新增好相應資料庫的驅動Jar包後,在彈出的視窗中配置資料來源連線資訊即可,如下圖所示:
    圖片.png
  2. Spring Bean,選擇Spring上下文中定義好的一個Bean來作為資料來源,點選圖示,在彈出的視窗中輸入資料來源名稱及要採用的Bean的ID,如下圖所示:
    在這裡插入圖片描述

儲存後,就可以在這個資料來源下新增具體的資料集,新增方法就是在這個資料來源下右鍵,在彈出的選單中選擇新增資料集,在彈出的視窗中定義資料集名稱、對應的方法名以及返回物件型別,如下圖所示:
在這裡插入圖片描述

  1. 通過實現com.bstek.ureport.definition.datasource.BuildinDatasource介面提供的內建資料來源:
    之前已經在application.yml裡面配置資料庫資訊了。
/**
 * Ureport 資料來源
 *
 * @author zhouzhaodong
 */

@Component
public class UreportDataSource implements BuildinDatasource {
    private static final String NAME = "MyDataSource";
    private final Logger log = LoggerFactory.getLogger(UreportDataSource.class);

    @Resource
    private DataSource dataSource;

    /**
     * 資料來源名稱
     **/
    @Override
    public String name() {
        return NAME;
    }

    /**
     * 獲取連線
     **/
    @Override
    public Connection getConnection() {
        try {
            return dataSource.getConnection();
        } catch (SQLException e) {
            log.error("Ureport 資料來源 獲取連線失敗!");
            e.printStackTrace();
        }
        return null;
    }

}

2. 測試

2.1 啟動專案

控制檯列印如下資訊代表成功:
圖片.png

2.2 訪問http://localhost:8888/ureport/designer

圖片.png
訪問地址根據配置檔案得到的:
圖片.png

2.3 設定資料來源

圖片.png
圖片.png
圖片.png
圖片.png
圖片.png
點選確定後資料來源就搞完了,當然那些複雜的資料查詢自己搞去吧!

2.4 設定報表

圖片.png
圖片.png
圖片.png
在這裡插入圖片描述

2.5 儲存報表

圖片.png
圖片.png
在這裡插入圖片描述

圖片.png

2.6 各種型別下載連結

圖片.png
圖片.png

個人部落格地址

http://www.zhouzhaodong.xyz

GitHub原始碼地址

https://github.com/zhouzhaodong/springboot/tree/master/spring-boot-ureport2

相關文章