jdbc連接池,德魯伊

最近用到了JDBC連接池,記錄一下:

1.首先將配置文件放置指定目錄。最好是resource下。文件內容及格式如下

#clickhouse連接池
driverClassName=ru.yandex.clickhouse.ClickHouseDriver
url=jdbc:clickhouse://192.168.0.52:8123/cars_recommend?characterEncoding=utf-8
user=
password=
filters=stat
initialSize=2
maxActive=30
maxWait=60000
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
validationQuery=SELECT 1
testWhileIdle=true
testOnBorrow=false
testOnReturn=false
poolPreparedStatements=false
maxPoolPreparedStatementPerConnectionSize=200

2.加載配置,初始化

package util;


import java.io.InputStream;
import java.sql.SQLException;
import java.util.Properties;

import org.apache.log4j.Logger;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.alibaba.druid.pool.DruidPooledConnection;

public class UserPoolConnection {

    /**
     * 要實現單例模式,保證全局只有一個數據庫連接池
     */
    static Logger log = Logger.getLogger(UserPoolConnection.class);
    private static UserPoolConnection dbPoolConnection = null;
    private static DruidDataSource druidDataSource = null;

    static {
        Properties properties = loadPropertiesFile("resources/user_server.properties");
        try {
            //DruidDataSrouce工廠模式
            druidDataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
        } catch (Exception e) {
            log.error("獲取配置失敗");
        }
    }

    /**
     * 數據庫連接池單例
     *
     * @return
     */
    public static synchronized UserPoolConnection getInstance() {
        if (null == dbPoolConnection) {
            dbPoolConnection = new UserPoolConnection();
        }
        return dbPoolConnection;
    }

    /**
     * 返回druid數據庫連接
     *
     * @return
     * @throws SQLException
     */
    public DruidPooledConnection getConnection() throws SQLException {
        return druidDataSource.getConnection();
    }

    /**
     * @param fullFile 配置文件名
     * @return Properties對象
     */
    private static Properties loadPropertiesFile(String fullFile) {
        if (null == fullFile || fullFile.equals("")) {
            throw new IllegalArgumentException("Properties file path can not be null" + fullFile);
        }
        InputStream inputStream = null;
        Properties p = null;
        try {
            inputStream = UserPoolConnection.class.getClassLoader().getResourceAsStream("user_server.properties");
            p = new Properties();
            p.load(inputStream);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != inputStream) {
                    inputStream.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return p;
    }

}

3.調用連接:

  public ResultSet userconn(String sql) {
        //ResultSet resultSet = null;
        try {
            connection = UserPoolConnection.getInstance().getConnection();
            statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery(sql);
            return resultSet;
        } catch (Exception e) {
            log.info("此次查詢數據庫結果爲空:" + sql);
        }
        return null;
    }

在讀取配置文件時,使用讀流的方式讀取。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章