配置文件 db_dbcp.properites

driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/db?useSSL=true
username=root
password=123456

DBCP连接池工具类 DBCPUtils.java

package top.try51.utils;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.tomcat.dbcp.dbcp2.BasicDataSource;
import org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory; public class DBCPUtils { // 加载名称为mysqlConn 的配置(src下放置 db_dbcp.properties 配置文件)
private static BasicDataSource ds = null; /**
* 定义一个ThreadLocal,绑定Connection,每个线程对应一个Connection,执行事务使用
*/
private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>(); static {
Properties props = new Properties();
try {
// 1.加载Properties文件输入流
InputStream is = DBCPUtils.class.getClassLoader().getResourceAsStream("db_dbcp.properites");
// 2.加载载配置
props.load(is);
is.close();
// 3. 创建数据源
ds = BasicDataSourceFactory.createDataSource(props);
} catch (Exception e) {
throw new RuntimeException(e);
}
} /**
*
* @return BasicDataSource
*/
public static DataSource getDataSource() {
return ds;
} /**
*
* @return 由BasicDataSource创建的 Connection
*/
public static Connection getConnection() {
try {
return ds.getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
} /**
*
* @return 获取当前线程绑定的Connection
* @throws SQLException
*/
public static Connection getTranConnection() throws SQLException{
//得到ThreadLocal中的connection
Connection conn = tl.get();
//判断conn是否为空,如果不为空,则说明事务已经开启
if(conn == null){
conn = getConnection();
//把当前开启的事务放入ThreadLocal中
tl.set(conn);
}
return conn;
} /**
* 开启事务,如果当前线程中没有Connection,则创建该线程对应的一个Connection
* @throws SQLException
*/
public static void beginTran() throws SQLException {
//设置事务提交为手动
getTranConnection().setAutoCommit(false);
} /**
* 提交事务
* @throws SQLException
*/
public static void commit() throws SQLException {
//得到ThreadLocal中的connection
Connection conn = getTranConnection();
//判断conn是否为空,如果为空,则说明没有开启事务
if(conn != null){
//如果conn不为空,提交事务
conn.commit();
//事务提交后,关闭连接
conn.close();
//将连接移出ThreadLocal
tl.remove();
}
} /**
* 回滚事务
* @throws SQLException
*/
public static void rollback() throws SQLException {
//得到ThreadLocal中的connection
Connection conn = getTranConnection();
//判断conn是否为空,如果为空,则说明没有开启事务,也就不能回滚事务
if(conn != null){
//事务回滚
conn.rollback();
//事务回滚后,关闭连接
conn.close();
//将连接移出ThreadLocal
tl.remove();
}
} }

DBCP连接池配置(DBCPUtils.java)的更多相关文章

  1. DBCP连接池配置常用参数说明

    参数 默认值 说明 username \ 传递给JDBC驱动的用于建立连接的用户名 password \ 传递给JDBC驱动的用于建立连接的密码 url \ 传递给JDBC驱动的用于建立连接的URL ...

  2. day39-Spring 14-Spring的JDBC模板:DBCP连接池配置

    一般常用的连接池是DBCP和C3P0. package cn.itcast.spring3.demo1; import java.sql.DriverManager; import org.junit ...

  3. 常见的DBCP连接池配置

    项目中使用mybatis出现一个问题,项目刚启动时,查询项目列表是ok的,过上一段时间之后,再次查询项目列表,查询失败,初步判断是因为mysql的连接问题,最后查阅资料,发现是连接池中的连接失效,导致 ...

  4. DBCP连接池配置参数说明

    <!-- 数据源1 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicData ...

  5. (数据库)DBCP连接池配置参数说明

    <!-- 数据源1 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicData ...

  6. dbcp连接池配置参数

    1.<!-- 数据源1 --> 2. <bean id="dataSource" 3. class="org.apache.commons.dbcp.B ...

  7. C3P0连接池配置(C3P0Utils.java)

    配置文件 c3p0-config.xml <?xml version="1.0" encoding="UTF-8"?> <c3p0-confi ...

  8. DBCP连接池配置示例

    <bean id="dataSourceOracle2" class="org.apache.commons.dbcp.BasicDataSource" ...

  9. DBCP连接池原理分析及配置用法

    DBCP连接池介绍 ----------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 ...

随机推荐

  1. User Agent 里的各个字段含义

    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_7) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.69 ...

  2. python带参装饰器的改良版

    简单点就是这种 def deco2(param=1): def _deco2(fun): def __deco2(*args, **kwargs): print (param) fun(*args, ...

  3. python打造线程池

    # coding=utf-8 import threading import Queue import time import traceback class ThreadPoolExecutor(o ...

  4. IIS------如何安装IIS

    1.打开“控制面板”->“程序”->“打开或关闭Windows功能” 2.如图所示: 3.如图所示: 4.点击确定,配置完成

  5. Redis 入门指令

    -- -- string SET key value GET key GETRANGE key start end GETSET key value GETBIT key offset MGET ke ...

  6. Empire安装和试用

    Empire2.0,powershell后渗透利器的安装和试用 https://www.restkhz.com/2017/05/empire-test/ 使用Empire“探索”Windows个人电脑 ...

  7. fork(), waitpid()

    NAME fork - create a child process SYNOPSIS #include <unistd.h> pid_t fork(void); RETURN VALUE ...

  8. HTML 格式化

    格式化标签: <!DOCTYPE HTML> <html> <body> <b> This text is bold </b> # < ...

  9. U3D优化

    容易忽略的美术资源的优化: 优化的美术制作真是一种感觉和经验的积累,能看出制作水平的不是做的效果多么犀利,而是得看制作的效果与对机器的要求等的性价比. 关于合并:  100个三角形的MESH,在渲染时 ...

  10. C语言实现字符串IP与整数型IP的相互转换

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <malloc.h&g ...