DBCP连接池配置(DBCPUtils.java)
配置文件 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)的更多相关文章
- DBCP连接池配置常用参数说明
参数 默认值 说明 username \ 传递给JDBC驱动的用于建立连接的用户名 password \ 传递给JDBC驱动的用于建立连接的密码 url \ 传递给JDBC驱动的用于建立连接的URL ...
- day39-Spring 14-Spring的JDBC模板:DBCP连接池配置
一般常用的连接池是DBCP和C3P0. package cn.itcast.spring3.demo1; import java.sql.DriverManager; import org.junit ...
- 常见的DBCP连接池配置
项目中使用mybatis出现一个问题,项目刚启动时,查询项目列表是ok的,过上一段时间之后,再次查询项目列表,查询失败,初步判断是因为mysql的连接问题,最后查阅资料,发现是连接池中的连接失效,导致 ...
- DBCP连接池配置参数说明
<!-- 数据源1 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicData ...
- (数据库)DBCP连接池配置参数说明
<!-- 数据源1 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicData ...
- dbcp连接池配置参数
1.<!-- 数据源1 --> 2. <bean id="dataSource" 3. class="org.apache.commons.dbcp.B ...
- C3P0连接池配置(C3P0Utils.java)
配置文件 c3p0-config.xml <?xml version="1.0" encoding="UTF-8"?> <c3p0-confi ...
- DBCP连接池配置示例
<bean id="dataSourceOracle2" class="org.apache.commons.dbcp.BasicDataSource" ...
- DBCP连接池原理分析及配置用法
DBCP连接池介绍 ----------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 ...
随机推荐
- eclipse 生成webservice 客户端
一.eclipse 自动生成的web客户端代码 调用客户端
- [GPU] CUDA for Deep Learning, why?
又是一枚祖国的骚年,阅览做做笔记:http://www.cnblogs.com/neopenx/p/4643705.html 这里只是一些基础知识.帮助理解DL tool的实现. 最新补充:我需要一台 ...
- 不用数据线连接到Android手机进行调试
这两天USB线丢了,老是找同事借也不方便,于是就网上找各种方法,这里总结个最简单的,当然你的手机需要root: 1 要打开WIFI,手机要和电脑在同一局域网内,这个你可以使用你的开发机共享wifi即可 ...
- 利用BurpSuite实现半自动化盲注
为了方便演示,这里直接使用字符,构造SQL Payload: ?id= and substring(user(),,)='r' 1.使用Burp抓包,发送到Intruder,设置模式和变量 2.设置字 ...
- java.security.NoSuchAlgorithmException: SHA1PRNG SecureRandom not available
好久没有使用MyEclipse10了,今天打开看了以前大学的项目,在Tomcat7中发布启动,我嚓嘞,报错: SEVERE: Exception initializing random number ...
- Selenium 基本用法
如下,使用 Selenium 打开淘宝首页并获取页面源代码: from selenium import webdriver browser = webdriver.Chrome() # 声明一个浏览器 ...
- unity2017.4.0f1使用AS3.0的AndroidSDK遇到的问题
原因: Unity 在编译时会调用 Android SDK tools 中的 android 命令,而在新版本的 Android SDK tools 中,android这个命令已经废弃了,导致 Uni ...
- C语言中一个字符数组里面的所有元素变成一个字符串
#include <string.h> int main() // 这里为了方便直接用main函数 { char array[] = { 'h', 'e', 'l', 'l', ' ...
- Android学习之蓝牙操作
BluetoothAdapter 用法 蓝牙运行原理:通过BluetoothAdapter 蓝牙适配器处理任务,如果蓝牙被启动之后,系统会自动去搜索其它设备,如果匹配到附近的设备就发送一个广播,Bro ...
- C#后台传入数据JS接收
今天碰到个问题,就是后台传入的数据,在JS中for循环的时候,下面那个j根本就不会往上加.所以只能将后台传入的对象,转换为json格式,由js进行解析后生成js中的对象 @{j=0;} for (va ...