package net.mengkang.nettyrest.mysql; import org.apache.commons.dbcp.BasicDataSourceFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.sql.DataSource; import java.io.InputStreamReader; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; public class JdbcPool { private static final Logger logger = LoggerFactory.getLogger(JdbcPool.class); /** * 在 java 中,编写数据库连接池需实现 java.sql.DataSource 接口 * DBCP 连接池就是 java.sql.DataSource 接口的一个具体实现 */ private static DataSource writeDataSource = null; private static DataSource readDataSource = null; static { try { Properties writeProp = new Properties(); writeProp.load(new InputStreamReader(JdbcPool.class.getResourceAsStream("/write.db.properties"), "UTF-8")); writeDataSource = BasicDataSourceFactory.createDataSource(writeProp); Properties readProp = new Properties(); readProp.load(new InputStreamReader(JdbcPool.class.getResourceAsStream("/read.db.properties"), "UTF-8")); readDataSource = BasicDataSourceFactory.createDataSource(readProp); } catch (Exception e) { logger.error("load db properties error",e); throw new ExceptionInInitializerError(e); } } public static Connection getWriteConnection() throws SQLException { return writeDataSource.getConnection(); } public static Connection getReadConnection() throws SQLException { return readDataSource.getConnection(); } public static void release(Connection conn, Statement st, ResultSet rs) { if (rs != null) { try { rs.close(); } catch (Exception e) { e.printStackTrace(); } rs = null; } if (st != null) { try { st.close(); } catch (Exception e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (Exception e) { e.printStackTrace(); } } } }