动态创建多种数据源

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

 

发布了6 篇原创文章 · 获赞 0 · 访问量 536
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览