-
大小: 8KB文件類型: .java金幣: 1下載: 0 次發布日期: 2021-06-12
- 語言: Java
- 標簽: JDBC、Druid??
資源簡介
JDBC工具類使用阿里巴巴的數據庫連接池Druid,支持高并發,有多線程環境下的事務和查詢測試。
代碼片段和文件信息
/**
?*?Created?on?2017年8月8日?上午11:36:14?
?*/
package?com.finest.camel.util;
import?java.sql.Connection;
import?java.sql.PreparedStatement;
import?java.sql.ResultSet;
import?java.sql.ResultSetmetaData;
import?java.util.ArrayList;
import?java.util.HashMap;
import?java.util.List;
import?java.util.Map;
import?org.slf4j.Logger;
import?org.slf4j.LoggerFactory;
import?com.alibaba.druid.pool.DruidDataSource;
/**
?*?JDBC線程安全的Druid數據庫連接池工具類.
?*?
?*?@author?hkb?
?*/
public?class?JDBCUtils?{
????/**?日志連接對象?*/
????private?static?final?Logger?log?=?LoggerFactory.getLogger(JDBCUtils.class);
????/**?數據源?*/
????private?static?DruidDataSource?dataSource?=?new?DruidDataSource();
????/**?放置數據庫連接的局部線程變量?*/
????private?static?ThreadLocal?container?=?new?ThreadLocal();
????static?{
????????//?初始化加載數據源配置
????????initDs();
????}
????/**
?????*?初始化
?????*/
????private?static?void?initDs()?{
????????try?{
????????????//?讀取配置文件
????????????String?url?=?PropertyUtils.getProperty(“db.jdbcUrl“);
????????????String?user?=?PropertyUtils.getProperty(“db.user“);
????????????String?password?=?PropertyUtils.getProperty(“db.password“);
????????????String?driverClass?=?PropertyUtils.getProperty(“db.driverClass“);
????????????dataSource.setDriverClassName(driverClass);
????????????dataSource.setUrl(url);
????????????dataSource.setUsername(user);
????????????dataSource.setPassword(password);
????????????//?連接數配置
????????????dataSource.setInitialSize(3);
????????????dataSource.setMinIdle(1);
????????????dataSource.setMaxActive(5);
????????????dataSource.setTestOnBorrow(true);
????????????dataSource.setTestOnReturn(true);
????????????//?destory線程檢測時間隔多久檢測一次連接有效性(單位:毫秒)
????????????dataSource.setTimeBetweenEvictionRunsMillis(30000);
????????????//?連接生存最小時間(單位?:毫秒)
????????????dataSource.setMinEvictableIdleTimeMillis(1500000);
????????????//?for?mysql
????????????dataSource.setPoolPreparedStatements(false);
????????????//?使用心跳語句檢測空閑連接
????????????dataSource.setTestWhileIdle(true);
????????????dataSource.setValidationQuery(“show?status?like?‘%Service_Status%‘;“);
????????????//?斷開重連時間不要設置過短
????????????dataSource.setTimeBetweenConnectErrorMillis(10000);
????????????//?啟用監控統計功能
????????????dataSource.setFilters(“stat“);
????????}?catch?(Exception?e)?{
????????????log.error(“連接池初始化異常,異常信息:“?+?e.getMessage());
????????}
????}
????/**
?????*?獲取連接方法
?????*?
?????*?@return
?????*/
????public?static?Connection?getConnection()?{
????????Connection?conn?=?null;
????????try?{
????????????conn?=?dataSource.getConnection();
????????????container.set(conn);
????????}?catch?(Exception?e)?{
????????????log.error(“獲取數據庫連接異常,異常信息:“?+?e.getMessage());
????????}
????????return?conn;
????}
????/**
?????*?獲取當前線程上的連接開啟事務
?????*/
????public?static?void?startTransaction()?{
????????//?首先獲取當前線程的連接
????????Connection?conn?=?container.get();
????????//?如果連接為空
????????if?(
- 上一篇:簡易網登錄注冊功能實現JSP+Servlet
- 下一篇:3D坦克java
評論
共有 條評論