/**
* Mr peng 2019-11-13 14:07:34
* 动态创建数据源
* @param params
* @return
*/
private DataSource buildDataSource(DataSourceSyn params) {
String driverClassName = params.getDriver();
String url = params.getUrl();
String username = params.getUsername();
String password = params.getPassword();
String jndi = params.getJndi();
//如果jndi等于kong就建立对应数据库的数据源否则就在tomcat配置文件中寻找name=jndi的数据源
if (org.springframework.util.StringUtils.isEmpty(jndi)) {
try {
Class<? extends DataSource> dataSourceType = null;
if (DataSourceTypeSyn.DAMENG.getCode().equals(driverClassName)) {
dataSourceType = DmdbDataSource.class; //达梦数据库
} else if (DataSourceTypeSyn.MYSQL.getCode().equals(driverClassName)) {
dataSourceType = (Class<? extends DataSource>) Class.forName("org.apache.tomcat.jdbc.pool.DataSource"); //MySQL数据库
} else if (DataSourceTypeSyn.ORACLE.getCode().equals(driverClassName)) {
dataSourceType = (Class<? extends DataSource>) Class.forName("org.apache.tomcat.jdbc.pool.DataSource"); //Oracle数据库
}
if (null == dataSourceType) {
logger.error("连接数据库失败:不支持该数据库驱动" + driverClassName);
return null;
}
DataSourceBuilder factory = DataSourceBuilder.create()
.type(dataSourceType) //如果不设置type,在删除数据源后再添加同样的数据源可能会报网络异常
.driverClassName(driverClassName)
.url(url)
.username(username)
.password(password);
return factory.build();
} catch (Exception ex) {
logger.error("连接数据库失败:" + ex.getMessage());
return null;
}
} else { //jndi数据源
JndiDataSourceLookup dataSourceLookup = new JndiDataSourceLookup();
try {
return dataSourceLookup.getDataSource(jndi);
} catch (DataSourceLookupFailureException e) {
logger.error("未找到JNDI数据源,将无法查看该数据源的任何信息", e);
return null;
}
}
}
动态创建多种数据库如【MYSQL,ORACLE、达梦】的数据源
最新推荐文章于 2024-07-16 09:03:49 发布