自定义数据连接
教学视频
说明
Bask Report 基于 java.util.ServiceLoader 机制支持自定义的数数据源,对应的接口:
public interface BuildinDatasourceProvider {
/**
* 根据DatasourceDefinition的定义生成java.sql.DataSource对象
* @param def
* @return
*/
DataSource buildDatasource(DatasourceDefinition def);
}
全路径为:com.basksoft.core.model.datasource.BuildinDatasourceProvider
前期准备-ServiceLoader 定义
分下面几个步骤来使用:
- 在 resources 资源目录下创建 META-INF/services 文件夹
- 在 services 文件夹中创建文件,以接口全名命名,就是:com.basksoft.core.model.datasource.BuildinDatasourceProvider
创建接口实现类,参考代码
import com.basksoft.core.definition.datasource.DatasourceDefinition; import com.basksoft.core.model.datasource.BuildinDatasourceProvider; 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 DataSource dataSource=null; @Override public DataSource buildDatasource(DatasourceDefinition def) { if(dataSource!=null){ return dataSource; } // 加载DBCP配置文件 Properties properties = new Properties(); 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; } }
修改 META-INF/services 下的 com.basksoft.core.model.datasource.BuildinDatasourceProvider 文件
xxx.xxx.xxx.TestBuildinDatasource
设计器使用
在报表设计器的右侧找到数据源定义的设计面板:
首先选择数据源标签,并单击+快捷按钮为报表文件添加 JNDI 数据源。
可以单击测试连接的按钮测试配置:
如果一切正确,则会出现如下弹出提示框:
这就表示数据库连接配置成功。