-
大小: 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
评论
共有 条评论