数据源配置
数据源类型
数据源是指提供数据的来源,Luck-Report 提供了三种类型的报表数据源,分别是:
- 连接数据源:直接连接数据库的数据源
- Spring Bean 数据源:使用 Spring 上下文中定义的 Bean 作为数据源
- 内置数据源:通过实现接口提供的数据源
连接数据源
连接数据源是直接连接数据库的数据源配置方式,配置步骤如下:
- 给
luck-report-pub的pom.xml文件添加好相应的数据库驱动 Jar 包依赖 - 在报表设计器中点击 "添加数据库连接"

- 在弹出的窗口中配置数据源连接信息(如数据库 URL、用户名、密码等)

- 点击测试连接,测试数据库连接是否可用
- 点击确定,连接数据源添加成功
Spring Bean 数据源
Spring Bean 数据源是使用 Spring 上下文中定义的 Bean 作为数据源的配置方式。
配置方式
- 在后端项目项目中定义数据源 Spring Bean,BeanId 用于识别 Bean,Bean 内部方法用于提供数据 方法必须要有三个参数,依次是String、String、Map,比如下面定义的 testBean 里就包含两个合法的方法,如下所示
java
package com.luck.report.web.test;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component("testBean")
public class TestBean {
public List<Map<String,Object>> loadReportData(String dsName, String datasetName, Map<String,Object> parameters){
List<Map<String, Object>> list = new ArrayList<>();
for (int i = 0; i < 1000; i++) {
Map<String, Object> m = new HashMap<String, Object>();
m.put("id", i);
list.add(m);
}
return list;
}
public List<Map<String,Object>> buildReport(String dsName,String datasetName,Map<String,Object> parameters){
List<Map<String, Object>> list = new ArrayList<>();
for (int i = 0; i < 1000; i++) {
Map<String, Object> m = new HashMap<String, Object>();
m.put("name", i);
list.add(m);
}
return list;
}
}- 在报表设计器中点击 "添加 Spring Bean 连接"

- 输入数据源名称和对应的 Bean ID

- 点击确定,Spring Bean 数据源添加成功
内置数据源
内置数据源是通过实现 BuildinDatasource 接口提供的数据源。
配置方式
- 实现
com.luck.report.core.definition.datasource.BuildinDatasource接口, 并将实现类注入为 Spring Bean
以下是参考代码,用于实现内置数据源:
java
package com.luck.report.web.config;
import com.luck.report.core.definition.datasource.BuildinDatasource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Configuration;
import javax.annotation.Resource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
/**
* 内置数据源配置
* @author luck
*/
@Configuration
public class DatasourceConfig implements BuildinDatasource {
@Resource
DataSource dataSource;
private final Logger log = LoggerFactory.getLogger(getClass());
@Override
public String name() {
return "myUReportDatasource";
}
@Override
public Connection getConnection() {
try {
return dataSource.getConnection();
} catch (SQLException e) {
log.error("数据源获取连接失败!");
}
return null;
}
}- 在报表设计器中点击 "添加内置数据源连接"

- 输入数据源名称和对应的 Bean ID

- 点击确定,内置数据源添加成功