基於HikariCP的工具類


import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

class HikariCPUtil {

//    db.properties文件檔案
//    url=jdbc:mysql://localhost:3306/bookshop?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
//    user=root
//            pass=0203
//    driver=com.mysql.cj.jdbc.Driver

    private HikariConfig config;

    private HikariDataSource dataSource;

    public void setConfig(HikariConfig config) {
        this.config = config;
        dataSource = new HikariDataSource(config);
    }

    public void setConfig(Properties properties) {
        config = new HikariConfig();
        config.setDriverClassName(properties.getProperty("driver"));
        config.setUsername(properties.getProperty("user"));
        config.setPassword(properties.getProperty("pass"));
        config.setJdbcUrl(properties.getProperty("url"));
        dataSource = new HikariDataSource(config);
    }

    public void setConfig(String path) throws IOException {
        InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(path);
        Properties properties = new Properties();
        properties.load(is);
        setConfig(properties);
    }

    public HikariConfig getConfig() {
        return config;
    }

    public HikariDataSource getDataSource() {
        return dataSource;
    }

    public final Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }

    public void close(Connection connection, Statement statement, ResultSet resultSet) {
        try {
            if (resultSet != null) {
                resultSet.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (statement != null) {
                    statement.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    if (connection != null) {
                        connection.close();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

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