DruidDataSource动态切换数据源

package com.gw.wx.util;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.Date;
import java.util.Map;
import java.util.Properties;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.alibaba.druid.pool.DruidPooledConnection;
import com.gw.entity.Wxbridgetoken;


public class DBPoolConnection {

private static DBPoolConnection dbPoolConnection = null;
    private static  DruidDataSource druidDataSource = null;
    
    /**
     * 数据库连接池单例
     * @return
     */
    public static synchronized DBPoolConnection getInstance(String url ,String username, String password){
    Properties properties = loadPropertiesFile("/db_server.properties");
    properties.setProperty("url", url);
    properties.setProperty("username", username);
    properties.setProperty("password", password);
   
    try {
    druidDataSource = (DruidDataSource)DruidDataSourceFactory.createDataSource(properties);
    } catch (Exception e) {
    e.printStackTrace();
    }
        dbPoolConnection = new DBPoolConnection();
        
        return dbPoolConnection;
    }


    /**
     * 返回druid数据库连接
     * @return
     * @throws SQLException
     */
    public static DruidPooledConnection getConnection(Wxbridgetoken bean) throws SQLException{
    DBPoolConnection dbp = new DBPoolConnection();
    Map<String, Object> dbMap = Application.getDBMap();
    dbp =  (DBPoolConnection) dbMap.get(bean.getAPPID());
    if(dbp == null ){
    dbp = DBPoolConnection.getInstance(bean.getDBUrl(), bean.getUser(), bean.getPassword());
    dbMap.put(bean.getAPPID(), dbp);
    }
        return dbp.druidDataSource.getConnection();
    }
    /**
     * @param string 配置文件名
     * @return Properties对象
     */
       private static Properties loadPropertiesFile(String fullFile) {
           Properties props = new Properties();
try(InputStream ins = ReadConfig.class.getResourceAsStream(fullFile)) {
props.load(ins);
return props;
} catch (IOException ex) {
// ex.printStackTrace();
return null;

    }

}


-----------------------------------------------------------------------------------------------------------------------------


package com.gw.wx.util;


import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;


/**
 * 通过读取sysConfig.properties中的配置信息
 * 
 */
public class ReadConfig {
private static String value;
private static String configFilePath = "/db_server.properties";


/**
* 根据key读取value
* @param key
* @return
*/
public static String getInfo(String key) {
Properties props = new Properties();
try(InputStream ins = ReadConfig.class.getResourceAsStream(configFilePath);) {
props.load(ins);
if (props.containsKey(key)) {
value = props.getProperty(key).trim();
} else {
return "";
}
} catch (IOException ex) {
// ex.printStackTrace();
return "";
}
return value;
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值