JDBC连接池
package com.bigdata.util;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Objects;
import java.util.Properties;
public class JdbcDataSourceUtil {
private static DataSource ds;
private static Properties prop;
private static InputStream inputStream;
private volatile static JdbcDataSourceUtil instance;
private JdbcDataSourceUtil() {
}
static {
prop = new Properties();
try {
inputStream = JdbcDataSourceUtil.class.getClassLoader().getResourceAsStream("mysql.properties");
prop.load(inputStream);
ds = DruidDataSourceFactory.createDataSource(prop);
} catch (Exception e) {
e.printStackTrace();
}
}
public static JdbcDataSourceUtil getInstance() {
if (instance == null) {
synchronized (JdbcDataSourceUtil.class) {
if (instance == null) {
instance = new JdbcDataSourceUtil();
}
}
}
return instance;
}
private static DataSource getDataSource() {
return ds;
}
public static Connection getJdbcConnection() {
try {
return ds.getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
public static Connection getJdbcConnection(String dataSourceType) throws SQLException {
prop = new Properties();
try {
switch (dataSourceType) {
case "mysql":
inputStream = JdbcDataSourceUtil.class.getClassLoader().getResourceAsStream("mysql.properties");
prop.load(inputStream);
ds = DruidDataSourceFactory.createDataSource(prop);
System.out.println("数据源类型: MySQL");
break;
case "hive":
inputStream = JdbcDataSourceUtil.class.getClassLoader().getResourceAsStream("hive.properties");
prop.load(inputStream);
ds = DruidDataSourceFactory.createDataSource(prop);
System.out.println("数据源类型: Hive");
break;
case "impala":
inputStream = JdbcDataSourceUtil.class.getClassLoader().getResourceAsStream("impala.properties");
prop.load(inputStream);
ds = DruidDataSourceFactory.createDataSource(prop);
System.out.println("数据源类型: Impala");
break;
default:
System.out.println("不能匹配的数据源类型: " + dataSourceType);
break;
}
} catch (SQLException e) {
throw new RuntimeException(e);
} catch (Exception e) {
e.printStackTrace();
}
return ds.getConnection();
}
public static void close(Connection conn, PreparedStatement ps, ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps != null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(Connection conn, PreparedStatement ps) {
close(conn, ps, null);
}
public static void close(Connection conn, ResultSet rs) {
close(conn, null, rs);
}
}
Resources
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://hadoop001:3306/xxxdb?useUnicode=true&characterEncoding=UTF-8&useSSL=false
username=xxxxxx
password=xxxxxx
initialSize=5
maxActive=10
maxWait=3000
driverClassName=org.apache.hive.jdbc.HiveDriver
url=jdbc:hive2://hadoop001:10000/test
username=hive
password=hive
driverClassName=org.apache.hive.jdbc.HiveDriver
url=jdbc:hive2://hadoop002:21050/xxxdb;auth=noSasl
username=hive
password=hive