动态创建多种数据库如【MYSQL,ORACLE、达梦】的数据源

    /**
     * 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;
            }
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值