mirror of
https://github.com/dataease/dataease.git
synced 2025-02-25 12:03:05 +08:00
feat: 示例数据
This commit is contained in:
parent
f88d0f5eaa
commit
17dcc57963
@ -32,5 +32,5 @@ public abstract class DatasourceProvider {
|
|||||||
|
|
||||||
abstract public Map<String, List> fetchResultAndField(DatasourceRequest datasourceRequest) throws Exception;
|
abstract public Map<String, List> fetchResultAndField(DatasourceRequest datasourceRequest) throws Exception;
|
||||||
|
|
||||||
abstract public void initDataSource(DatasourceRequest datasourceRequest) throws Exception;
|
abstract public void initDataSource(DatasourceRequest datasourceRequest, String type) throws Exception;
|
||||||
}
|
}
|
||||||
|
@ -271,7 +271,7 @@ public class JdbcProvider extends DatasourceProvider {
|
|||||||
private Connection getConnectionFromPool(DatasourceRequest datasourceRequest) throws Exception {
|
private Connection getConnectionFromPool(DatasourceRequest datasourceRequest) throws Exception {
|
||||||
ComboPooledDataSource dataSource = jdbcConnection.get(datasourceRequest.getDatasource().getId());
|
ComboPooledDataSource dataSource = jdbcConnection.get(datasourceRequest.getDatasource().getId());
|
||||||
if (dataSource == null) {
|
if (dataSource == null) {
|
||||||
initDataSource(datasourceRequest);
|
initDataSource(datasourceRequest, "add");
|
||||||
}
|
}
|
||||||
dataSource = jdbcConnection.get(datasourceRequest.getDatasource().getId());
|
dataSource = jdbcConnection.get(datasourceRequest.getDatasource().getId());
|
||||||
Connection co = dataSource.getConnection();
|
Connection co = dataSource.getConnection();
|
||||||
@ -279,30 +279,48 @@ public class JdbcProvider extends DatasourceProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initDataSource(DatasourceRequest datasourceRequest) throws Exception {
|
public void initDataSource(DatasourceRequest datasourceRequest, String type) throws Exception {
|
||||||
ComboPooledDataSource dataSource = jdbcConnection.get(datasourceRequest.getDatasource().getId());
|
switch (type){
|
||||||
if (dataSource == null) {
|
case "add":
|
||||||
dataSource = new ComboPooledDataSource();
|
ComboPooledDataSource dataSource = jdbcConnection.get(datasourceRequest.getDatasource().getId());
|
||||||
setCredential(datasourceRequest, dataSource);
|
if (dataSource == null) {
|
||||||
dataSource.setMaxIdleTime(30); // 最大空闲时间
|
extracted(datasourceRequest);
|
||||||
dataSource.setAcquireIncrement(5);// 增长数
|
}
|
||||||
dataSource.setInitialPoolSize(initPoolSize);// 初始连接数
|
break;
|
||||||
dataSource.setMinPoolSize(initPoolSize); // 最小连接数
|
case "edit":
|
||||||
dataSource.setMaxPoolSize(maxConnections); // 最大连接数
|
jdbcConnection.remove(datasourceRequest.getDatasource().getId());
|
||||||
dataSource.setAcquireRetryAttempts(30);// 获取连接重试次数
|
extracted(datasourceRequest);
|
||||||
dataSource.setIdleConnectionTestPeriod(60); // 每60s检查数据库空闲连接
|
break;
|
||||||
dataSource.setMaxStatements(0); // c3p0全局的PreparedStatements缓存的大小
|
case "delete":
|
||||||
dataSource.setBreakAfterAcquireFailure(false); // 获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。Default: false
|
jdbcConnection.remove(datasourceRequest.getDatasource().getId());
|
||||||
dataSource.setTestConnectionOnCheckout(false); // 在每个connection 提交是校验有效性
|
break;
|
||||||
dataSource.setTestConnectionOnCheckin(true); // 取得连接的同时将校验连接的有效性
|
default:
|
||||||
dataSource.setCheckoutTimeout(60000); // 从连接池获取连接的超时时间,如设为0则无限期等待。单位毫秒,默认为0
|
break;
|
||||||
dataSource.setPreferredTestQuery("SELECT 1");
|
|
||||||
dataSource.setDebugUnreturnedConnectionStackTraces(true);
|
|
||||||
dataSource.setUnreturnedConnectionTimeout(3600);
|
|
||||||
jdbcConnection.put(datasourceRequest.getDatasource().getId(), dataSource);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void extracted(DatasourceRequest datasourceRequest) throws PropertyVetoException {
|
||||||
|
ComboPooledDataSource dataSource;
|
||||||
|
dataSource = new ComboPooledDataSource();
|
||||||
|
setCredential(datasourceRequest, dataSource);
|
||||||
|
dataSource.setMaxIdleTime(30); // 最大空闲时间
|
||||||
|
dataSource.setAcquireIncrement(5);// 增长数
|
||||||
|
dataSource.setInitialPoolSize(initPoolSize);// 初始连接数
|
||||||
|
dataSource.setMinPoolSize(initPoolSize); // 最小连接数
|
||||||
|
dataSource.setMaxPoolSize(maxConnections); // 最大连接数
|
||||||
|
dataSource.setAcquireRetryAttempts(30);// 获取连接重试次数
|
||||||
|
dataSource.setIdleConnectionTestPeriod(60); // 每60s检查数据库空闲连接
|
||||||
|
dataSource.setMaxStatements(0); // c3p0全局的PreparedStatements缓存的大小
|
||||||
|
dataSource.setBreakAfterAcquireFailure(false); // 获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。Default: false
|
||||||
|
dataSource.setTestConnectionOnCheckout(false); // 在每个connection 提交是校验有效性
|
||||||
|
dataSource.setTestConnectionOnCheckin(true); // 取得连接的同时将校验连接的有效性
|
||||||
|
dataSource.setCheckoutTimeout(60000); // 从连接池获取连接的超时时间,如设为0则无限期等待。单位毫秒,默认为0
|
||||||
|
dataSource.setPreferredTestQuery("SELECT 1");
|
||||||
|
dataSource.setDebugUnreturnedConnectionStackTraces(true);
|
||||||
|
dataSource.setUnreturnedConnectionTimeout(3600);
|
||||||
|
jdbcConnection.put(datasourceRequest.getDatasource().getId(), dataSource);
|
||||||
|
}
|
||||||
|
|
||||||
private static Connection getConnection(DatasourceRequest datasourceRequest) throws Exception {
|
private static Connection getConnection(DatasourceRequest datasourceRequest) throws Exception {
|
||||||
String username = null;
|
String username = null;
|
||||||
String password = null;
|
String password = null;
|
||||||
|
@ -55,9 +55,24 @@ public class DatasourceService {
|
|||||||
datasource.setCreateTime(currentTimeMillis);
|
datasource.setCreateTime(currentTimeMillis);
|
||||||
datasource.setCreateBy(String.valueOf(AuthUtils.getUser().getUsername()));
|
datasource.setCreateBy(String.valueOf(AuthUtils.getUser().getUsername()));
|
||||||
datasourceMapper.insertSelective(datasource);
|
datasourceMapper.insertSelective(datasource);
|
||||||
|
initConnectionPool(datasource, "add");
|
||||||
return datasource;
|
return datasource;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initConnectionPool(Datasource datasource, String type) {
|
||||||
|
commonThreadPool.addTask(() -> {
|
||||||
|
try {
|
||||||
|
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
|
||||||
|
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
||||||
|
datasourceRequest.setDatasource(datasource);
|
||||||
|
datasourceProvider.initDataSource(datasourceRequest, type);
|
||||||
|
LogUtil.info("Succsss to init datasource connection pool: " + datasource.getName());
|
||||||
|
} catch (Exception e) {
|
||||||
|
LogUtil.error("Failed to init datasource connection pool: " + datasource.getName(), e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public List<DatasourceDTO> getDatasourceList(DatasourceUnionRequest request) throws Exception {
|
public List<DatasourceDTO> getDatasourceList(DatasourceUnionRequest request) throws Exception {
|
||||||
request.setSort("update_time desc");
|
request.setSort("update_time desc");
|
||||||
return extDataSourceMapper.queryUnion(request);
|
return extDataSourceMapper.queryUnion(request);
|
||||||
@ -92,6 +107,7 @@ public class DatasourceService {
|
|||||||
datasource.setCreateTime(null);
|
datasource.setCreateTime(null);
|
||||||
datasource.setUpdateTime(System.currentTimeMillis());
|
datasource.setUpdateTime(System.currentTimeMillis());
|
||||||
datasourceMapper.updateByPrimaryKeySelective(datasource);
|
datasourceMapper.updateByPrimaryKeySelective(datasource);
|
||||||
|
initConnectionPool(datasource, "edit");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void validate(Datasource datasource) throws Exception {
|
public void validate(Datasource datasource) throws Exception {
|
||||||
@ -148,17 +164,7 @@ public class DatasourceService {
|
|||||||
List<Datasource> datasources = datasourceMapper.selectByExampleWithBLOBs(new DatasourceExample());
|
List<Datasource> datasources = datasourceMapper.selectByExampleWithBLOBs(new DatasourceExample());
|
||||||
datasources.forEach(datasource -> {
|
datasources.forEach(datasource -> {
|
||||||
try {
|
try {
|
||||||
commonThreadPool.addTask(() -> {
|
initConnectionPool(datasource, "add");
|
||||||
try {
|
|
||||||
DatasourceProvider datasourceProvider = ProviderFactory.getProvider(datasource.getType());
|
|
||||||
DatasourceRequest datasourceRequest = new DatasourceRequest();
|
|
||||||
datasourceRequest.setDatasource(datasource);
|
|
||||||
datasourceProvider.initDataSource(datasourceRequest);
|
|
||||||
LogUtil.info("Succsss to init datasource connection pool: " + datasource.getName());
|
|
||||||
} catch (Exception e) {
|
|
||||||
LogUtil.error("Failed to init datasource connection pool: " + datasource.getName(), e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
139
backend/src/main/resources/db/migration/V8__demo.sql
Normal file
139
backend/src/main/resources/db/migration/V8__demo.sql
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user