UReport2 数据源配置

2022-09-08 10:41 更新

配置报表数据源

       打开UReport2的报表设计器,可以看到UReport2提供了三种类型的报表数据源,如下图所示:

datasource

       三种类型的数据源分别是直接连接数据库,Spring Bean以及通过实现com.bstek.ureport.definition.datasource.BuildinDatasource接口提供的内置数据源。

1、直连数据库     

  直接连接数据库比较简单,就是在项目的classpath中添加好相应数据库的驱动Jar包后,在弹出的窗口中配置数据源连接信息即可,如下图所示:

config-ds

2、Spring Bean数据源       

Spring Bean类型的数据源可以选择Spring上下文中定义好的一个Bean来作为数据源,点击 图标,在弹出的窗口中输入数据源名称及要采用的Bean的ID,如下图所示:

bean-ds

       保存后,就可以在这个数据源下添加具体的数据集,添加方法就是在这个数据源下右键,在弹出的菜单中选择添加数据集,在弹出的窗口中定义数据集名称、对应的方法名以及返回对象类型,如下图所示:

bean-dataset

       在Spring bean数据集配置中,方法名我们可以点击右侧的“选择方法”按钮来选择当前Bean对应的类中定义的方法,但这里对方法的要求是:方法必须要有三个参数,依次是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数据集方法要有三个参数,分别是String,String,Map,依次对应数据源名称、数据集名称以及外部传入的参数Map,Bean的方法只有是这种结构才可以选择。对于数据集方法的返回值,目前来说可以支持两种类型,一种是我们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、内置数据源

       这种类型的数据源,要示我们实现BuildinDatasource接口,同时将BuildinDatasource接口实现类配置到Spring即可,BuildinDatasource接口源码如下:

package com.bstek.ureport.definition.datasource;
import java.sql.Connection;
/**
 * @author Jacky.gao
 * @since 2017年2月9日
 */
public interface BuildinDatasource {
    /**
     * @return 返回数据源名称
     */
    String name();
    /**
     * @return 返回当前采用数据源的一个连接
     */
    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内置数据源
 * @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() {
        // 获取配置的数据源
        Connection connection= null;
        try {
            connection = dataSource.getConnection();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return connection;
    }
}

上图中的dataSource指向了默认数据源,可通过以下xml方式注入,方便在不同环境中修改数据源

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

BuildinDatasource接口实现类配置到Spring中后,UReport2会自动检测到,这样在报表设计器中,点击数据源页签中的 按钮,在弹出的窗口中就可以选择定义好的内置数据源,如下图所示:

built-list

对于UReport2提供的三种类型的数据源,各有其特点及适用场景,对于使用者来说,要根据它们的特点灵活选择。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号