Skip to content

数据源配置

数据源类型

数据源是指提供数据的来源,Luck-Report 提供了三种类型的报表数据源,分别是:

  • 连接数据源:直接连接数据库的数据源
  • Spring Bean 数据源:使用 Spring 上下文中定义的 Bean 作为数据源
  • 内置数据源:通过实现接口提供的数据源

连接数据源

连接数据源是直接连接数据库的数据源配置方式,配置步骤如下:

  1. luck-report-pubpom.xml 文件添加好相应的数据库驱动 Jar 包依赖
  2. 在报表设计器中点击 "添加数据库连接"
    选择连接数据源
  3. 在弹出的窗口中配置数据源连接信息(如数据库 URL、用户名、密码等)
    数据库连接弹窗
  4. 点击测试连接,测试数据库连接是否可用
  5. 点击确定,连接数据源添加成功

Spring Bean 数据源

Spring Bean 数据源是使用 Spring 上下文中定义的 Bean 作为数据源的配置方式。

配置方式

  1. 在后端项目项目中定义数据源 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;
   }
}
  1. 在报表设计器中点击 "添加 Spring Bean 连接"
    选择spring数据源
  2. 输入数据源名称和对应的 Bean ID
    spring连接弹窗
  3. 点击确定,Spring Bean 数据源添加成功

内置数据源

内置数据源是通过实现 BuildinDatasource 接口提供的数据源。

配置方式

  1. 实现 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;
   }

}
  1. 在报表设计器中点击 "添加内置数据源连接"
    选择spring数据源
  2. 输入数据源名称和对应的 Bean ID
    spring连接弹窗
  3. 点击确定,内置数据源添加成功

Luck-Report 报表引擎