自定义数据连接
教学视频
说明
Bask Report基于java.util.ServiceLoader机制支持自定义的数数据源,对应的接口:
public interface BuildinDatasourceProvider {
/**
* 根据DatasourceDefinition的定义生成java.sql.DataSource对象
* @param def
* @return
*/
DataSource buildDatasource(DatasourceDefinition def);
/**
* 销毁java.sql.DataSource对象
* @param ds
*/
void destroyDatasource(DatasourceWrapper ds);
}
全路径为:com.basksoft.report.core.model.datasource.BuildinDatasourceProvider
前期准备-ServiceLoader定义
分下面几个步骤来使用:
- 在resources资源目录下创建META-INF/services文件夹
- 在services文件夹中创建文件,以接口全名命名,就是:com.basksoft.report.core.model.datasource.BuildinDatasourceProvider
创建接口实现类,参考代码
import com.basksoft.report.core.definition.datasource.DatasourceDefinition; import com.basksoft.report.core.model.datasource.BuildinDatasourceProvider; import com.basksoft.report.core.model.datasource.DatasourceWrapper; import org.apache.commons.dbcp2.BasicDataSource; import org.apache.commons.dbcp2.BasicDataSourceFactory; import javax.sql.DataSource; import java.sql.SQLException; import java.util.Properties; public class TestBuildinDatasource implements BuildinDatasourceProvider { private static Properties properties = new Properties(); @Override public DataSource buildDatasource(DatasourceDefinition def) { // 加载DBCP配置文件 DataSource dataSource = null; properties.put("username", "root"); properties.put("password", "xxxxx"); properties.put("driverClassName", "com.mysql.jdbc.Driver"); properties .put("url", "jdbc:mysql://localhost:3306/baskreportsample?useUnicode=true&characterEncoding=UTF-8"); try { dataSource = BasicDataSourceFactory.createDataSource(properties); } catch (Exception e) { e.printStackTrace(); } return dataSource; } @Override public void destroyDatasource(DatasourceWrapper ds) { if (ds == null) return; DataSource datasource = ds.getDatasource(); if (datasource instanceof BasicDataSource) { BasicDataSource basicDatasource = (BasicDataSource) datasource; try { basicDatasource.close(); } catch (SQLException e) { e.printStackTrace(); } } } }
- 修改META-INF/services下的com.basksoft.report.core.model.datasource.BuildinDatasourceProvider文件
xxx.xxx.xxx.TestBuildinDatasource
设计器使用
在报表设计器的右侧找到数据源定义的设计面板:
首先选择数据源标签,并单击+快捷按钮为报表文件添加JNDI数据源。
可以单击测试连接的按钮测试配置:
如果一切正确,则会出现如下弹出提示框:
这就表示数据库连接配置成功。