【轉載】dbcp連線池的簡單使用
阿新 • • 發佈:2018-12-14
dbcp資料庫連線池的簡單使用---MySQL
有問題可以留言,如果你是初學者,下面的示例程式碼很不錯:)
package mysqlTest; import org.apache.commons.dbcp2.BasicDataSource; import org.apache.commons.dbcp2.BasicDataSourceFactory; import org.omg.CORBA.Object; import javax.sql.DataSource; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; /** * Description:使用dpcp連線池連線資料庫 * * @author 0 * Created by 2018年12月11 */ public class DBCPUtil { /** * 資料來源 */ private static DataSource DS; private static String configFile = "/dbcp.properties"; /** * @return * @Description: 從資料來源獲取一個連線 */ public Connection getConnection() { Connection connection = null; if (DS != null) { try { connection = DS.getConnection(); } catch (SQLException e) { e.printStackTrace(); } try { connection.setAutoCommit(false); } catch (SQLException e) { e.printStackTrace(); } return connection; } return connection; } /** * 預設的建構函式 */ public DBCPUtil() { DBCPUtil.initDbcp(); } /** * @Description: 方式一,DBCP通過讀取配置檔案獲取引數後,通過BasicDataSourceFactory獲取DataSource */ private static void initDbcp() { Properties properties = new Properties(); try { properties.load(Object.class.getResourceAsStream(configFile)); DS = BasicDataSourceFactory.createDataSource(properties); } catch (Exception e) { e.printStackTrace(); } } /** * 建構函式,初始化了DS,指定資料庫 */ public DBCPUtil(String connectURI) { initDS(connectURI); } /** * 建構函式,初始化DS,制定所有引數 */ public DBCPUtil(String connectURI, String username, String password, String driverClass, int initialSize, int maxActive, int maxIdle, int maxWait, int minIdle) { initDS(connectURI, username, password, driverClass, initialSize, maxActive, maxIdle, maxWait, minIdle); } /** * @param connectURI 資料庫 * @return * @Description 建立資料來源,除了資料庫外,都使用預設的引數 */ public static void initDS(String connectURI) { initDS(connectURI, "myoracle", "myoracle", "oracle.jdbc.driver.OracleDriver", 5, 30, 10, 1, 1000); } /** * @param connectURI * @param username * @param password * @param driverClass * @param initialSize * @param maxActive * @param maxIdle * @param maxWait * @param minIdle * @Description: 方式二,手動給建立DataSource,並給其設定引數 */ public static void initDS(String connectURI, String username, String password, String driverClass, int initialSize, int maxActive, int maxIdle, int minIdle, int maxWait) { BasicDataSource dataSource = new BasicDataSource(); dataSource.setDriverClassName(driverClass); dataSource.setUsername(username); dataSource.setPassword(password); dataSource.setUrl(connectURI); dataSource.setInitialSize(initialSize); dataSource.setMaxTotal(maxActive); dataSource.setMaxIdle(maxIdle); dataSource.setMaxWaitMillis(maxWait); dataSource.setMinIdle(minIdle); DS = dataSource; } public static void main(String[] args) { System.out.println(new DBCPUtil().getConnection()); } }
配置檔案:(放到src目錄下)
#dbcp.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
username=root
password=123456
maxActive=30
maxIdle=10
minIdle=1
maxWait=10000
initialSize=5
removeAbandoned=true
removeAbandonedTimeout=300