UReport2 數(shù)據(jù)源配置

2022-09-08 10:41 更新

配置報表數(shù)據(jù)源

       打開UReport2的報表設計器,可以看到UReport2提供了三種類型的報表數(shù)據(jù)源,如下圖所示:

datasource

       三種類型的數(shù)據(jù)源分別是直接連接數(shù)據(jù)庫,Spring Bean以及通過實現(xiàn)com.bstek.ureport.definition.datasource.BuildinDatasource接口提供的內(nèi)置數(shù)據(jù)源。

1、直連數(shù)據(jù)庫     

  直接連接數(shù)據(jù)庫比較簡單,就是在項目的classpath中添加好相應數(shù)據(jù)庫的驅(qū)動Jar包后,在彈出的窗口中配置數(shù)據(jù)源連接信息即可,如下圖所示:

config-ds

2、Spring Bean數(shù)據(jù)源       

Spring Bean類型的數(shù)據(jù)源可以選擇Spring上下文中定義好的一個Bean來作為數(shù)據(jù)源,點擊 圖標,在彈出的窗口中輸入數(shù)據(jù)源名稱及要采用的Bean的ID,如下圖所示:

bean-ds

       保存后,就可以在這個數(shù)據(jù)源下添加具體的數(shù)據(jù)集,添加方法就是在這個數(shù)據(jù)源下右鍵,在彈出的菜單中選擇添加數(shù)據(jù)集,在彈出的窗口中定義數(shù)據(jù)集名稱、對應的方法名以及返回對象類型,如下圖所示:

bean-dataset

       在Spring bean數(shù)據(jù)集配置中,方法名我們可以點擊右側的“選擇方法”按鈕來選擇當前Bean對應的類中定義的方法,但這里對方法的要求是:方法必須要有三個參數(shù),依次是String,String,Map,比如我們上面定義的testBean里就包含兩個合法的方法,如下所示:

package com.ureport.test;
import java.util.List;
import java.util.Map;
/**
 * @author Jacky.gao
 * @since 2017年2月7日
 */
public class TestBean {
    public List<Map<String,Object>> loadReportData(String dsName,String datasetName,Map<String,Object> parameters){
        return null;
    }
    public List<Map<String,Object>> buildReport(String dsName,String datasetName,Map<String,Object> parameters){
        return null;
    }
}

       所以對于一個合法的Bean數(shù)據(jù)集方法要有三個參數(shù),分別是String,String,Map,依次對應數(shù)據(jù)源名稱、數(shù)據(jù)集名稱以及外部傳入的參數(shù)Map,Bean的方法只有是這種結構才可以選擇。對于數(shù)據(jù)集方法的返回值,目前來說可以支持兩種類型,一種是我們TestBean中返回的Map<String,Object>類型的List集合;另一種就是返回一個POJO類型的List集合,比如像下面的方法:

public List<User> loadData(String dsName,String datasetName,Map<String,Object> parameters){
    return null;
}

       在上面的示例方法中,返回的就是User對象集合,這里的User對象,就是一個普通的POJO對象。

3、內(nèi)置數(shù)據(jù)源

       這種類型的數(shù)據(jù)源,要示我們實現(xiàn)BuildinDatasource接口,同時將BuildinDatasource接口實現(xiàn)類配置到Spring即可,BuildinDatasource接口源碼如下:

package com.bstek.ureport.definition.datasource;
import java.sql.Connection;
/**
 * @author Jacky.gao
 * @since 2017年2月9日
 */
public interface BuildinDatasource {
    /**
     * @return 返回數(shù)據(jù)源名稱
     */
    String name();
    /**
     * @return 返回當前采用數(shù)據(jù)源的一個連接
     */
    Connection getConnection();
}

       以下以springBoot項目舉例說明:

@Configuration
@ImportResource(locations={"classpath:ureport-console-context.xml"})
public class Config {
    @Primary
    @Bean(name = "defaultDs")
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource createDefaultDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Autowired
    @Bean(name = "jdbcTemplate")
    public JdbcTemplate createJdbcTemplate(@Qualifier("defaultDs") DataSource defaultDataSource) {
        return new JdbcTemplate(defaultDataSource);
    }

}
/**
 * @Description Ureport內(nèi)置數(shù)據(jù)源
 * @Author hans
 * @CreateDate 2022-9-6
 */
@Component("innerDS-mysql")
public class BuildinReportDS implements BuildinDatasource{

    @Autowired
    private DataSource dataSource;

    @Override
    public String name() {
        return "innerDs";
    }

    @Override
    public Connection getConnection() {
        // 獲取配置的數(shù)據(jù)源
        Connection connection= null;
        try {
            connection = dataSource.getConnection();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return connection;
    }
}

上圖中的dataSource指向了默認數(shù)據(jù)源,可通過以下xml方式注入,方便在不同環(huán)境中修改數(shù)據(jù)源

<bean id="innerDS-mysql" class="com.bstek.....BulidInReportDS">    <property name="dataSource" ref="dataSource" /> 
</bean>  

BuildinDatasource接口實現(xiàn)類配置到Spring中后,UReport2會自動檢測到,這樣在報表設計器中,點擊數(shù)據(jù)源頁簽中的 按鈕,在彈出的窗口中就可以選擇定義好的內(nèi)置數(shù)據(jù)源,如下圖所示:

built-list

對于UReport2提供的三種類型的數(shù)據(jù)源,各有其特點及適用場景,對于使用者來說,要根據(jù)它們的特點靈活選擇。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號