阿里巴巴连接池之一Druid

package com.tenwa.reckon;

import java.io.FileInputStream;
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;

import com.alibaba.druid.pool.DruidDataSource;

public class DruidERPDataSource {

    private static DruidDataSource dataSource;
    private Connection connection;
    static {
        Properties prop = new Properties();
        InputStream is = null;
        try {
            is = new FileInputStream(DruidERPDataSource.class.getClassLoader().getResource("datasource.properties").getFile());
            prop.load(is);
            dataSource = new DruidDataSource();
            dataSource.setUrl(prop.getProperty("druid.url"));
            dataSource.setDriverClassName(prop.getProperty("druid.driver"));
            dataSource.setUsername(prop.getProperty("druid.user"));
            dataSource.setPassword(prop.getProperty("druid.pwd"));
            dataSource.setMinIdle(Integer.parseInt((prop.getProperty("druid.minIdle"))));
            dataSource.setMaxActive(Integer.parseInt((prop.getProperty("druid.maxActive"))));
            dataSource.setInitialSize(Integer.parseInt((prop.getProperty("druid.initialSize"))));
            dataSource.setMaxWait((Long.parseLong((prop.getProperty("druid.maxWait")))));
            dataSource.setTimeBetweenEvictionRunsMillis((Long.parseLong((prop.getProperty("druid.timeBetweenEvictionRunsMillis")))));
            dataSource.setMinEvictableIdleTimeMillis((Long.parseLong((prop.getProperty("druid.minEvictableIdleTimeMillis")))));
            dataSource.setTestWhileIdle((Boolean.parseBoolean((prop.getProperty("druid.testWhileIdle")))));
            dataSource.setTestOnBorrow((Boolean.parseBoolean((prop.getProperty("druid.testOnBorrow")))));
            dataSource.setTestOnReturn((Boolean.parseBoolean((prop.getProperty("druid.testOnReturn")))));
            dataSource.setPoolPreparedStatements((Boolean.parseBoolean((prop.getProperty("druid.poolPreparedStatements")))));
            dataSource.setMaxPoolPreparedStatementPerConnectionSize(Integer.parseInt((prop.getProperty("druid.maxPoolPreparedStatementPerConnectionSize"))));
            dataSource.setDefaultAutoCommit((Boolean.parseBoolean((prop.getProperty("druid.defaultAutoCommit")))));
            dataSource.setValidationQuery(prop.getProperty("druid.validationQuery"));
            try {
                dataSource.setFilters(prop.getProperty("druid.filters"));
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            dataSource.setRemoveAbandonedTimeout(Integer.parseInt((prop.getProperty("druid.removeAbandonedTimeout"))));
            dataSource.setLogAbandoned((Boolean.parseBoolean((prop.getProperty("druid.logAbandoned")))));
        } catch(IOException e) {
            
        }
    }
    
    public static void main(String[] args) throws Exception {
        for(int i =0;i<400;i++){
            DruidERPDataSource erp = new DruidERPDataSource();
            ResultSet rs = erp.executeQuery("select * from proj_info");
            while(rs.next()) {
                System.out.println(rs.getString("proj_id"));
            }
            
        }
        for(int i =0;i<900;i++){
            DruidERPDataSource erp = new DruidERPDataSource();
            ResultSet rs = erp.executeQuery("select * from proj_info");
            while(rs.next()) {
                System.out.println(rs.getString("proj_id"));
            }
            
        }
        //erp.close();
    }
    
    public void getConnection() {
        try {
            connection = dataSource.getConnection(); 
        } catch (SQLException e) { 
          e.printStackTrace();
        } 
    } 
    
    public  void close() { 
        if(null != connection) { 
            try {
                if(!connection.isClosed()) {
                    connection.close();
                    this.connection = null;
                }
            } catch (SQLException e) { 
                e.printStackTrace();
            } 
        } 
    } 
    
    public DruidERPDataSource() throws Exception {
        getConnection();
        if(this.connection == null) {
            throw new Exception("未获取到连接");
        }
    }
    
    public int executeUpdate(String sql) throws SQLException {
        Statement stat = null;
        int result= 0;
        try {
            if(connection == null) {
                getConnection();
            }
            stat = this.connection.createStatement();
            result = stat.executeUpdate(sql);
        } catch(Exception e) {
            e.printStackTrace();
        }
        return result;
    }
    
    public ResultSet executeQuery(String sql) throws SQLException {
        Statement stat = null;
        ResultSet result = null;
        try {
            if(connection == null) {
                getConnection();
            }
            stat = this.connection.createStatement();
            result = stat.executeQuery(sql);
        }catch(Exception e) {
            e.printStackTrace();
        }
        return result;
    }
    
    
}
 

猜你喜欢

转载自blog.csdn.net/kevin_cat/article/details/82378023