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 ,支持 ...
随机推荐
- go的精选类库
https://github.com/avelino/awesome-go https://gitee.com/snail/proxy
- c#POST请求php接口
POST请求php接口 /// <summary> /// 指定Post地址使用Get 方式获取全部字符串 /// </summary> /// <param name= ...
- NYOJ 116 士兵杀敌 (线段树,区间和)
题目链接:NYOJ 116 士兵杀敌 士兵杀敌(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描写叙述 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的 ...
- logstash结合rsyslog,收集系统日志
rsyslog是日志收集工具.如今非常多Linux都自带rsyslog,用其替换掉syslog.怎样安装rsyslog就不讲了.大概讲下原理.然后讲logstash的相关配置. rsyslog本身有一 ...
- SpringMVC -- 梗概--源码--壹--收参
附:实体类 Class : User package com.c61.entity; import java.text.SimpleDateFormat; import java.util.Date; ...
- CentOS 6.4 命令行 安装 VMware Tools
新建cdrom挂载目录 mkdir /mnt/cdrom 挂载光驱 mount -t auto /dev/cdrom /mnt/cdrom这命令就是把CentOS CDROM挂载在/mnt/cdrom ...
- ssh事务回滚,纪念这几个月困扰已久的心酸
以前的事务采用的是JTA,xml注入的方式.本人就着开发要优雅合理利用轮子的态度,一直不满意JTA式的申明和切入方式. spring的注解方式多优雅,可是万恶的直到项目快要上线时终于找到了注解式不能回 ...
- webstrom 2017 安装及配置
下载安装:http://www.jetbrains.com/webstorm/ 激活:安装完成后,在打开的 License Activation 窗口中选择 License server. 在输入框输 ...
- 【安全开发】python安全编码规范
申明:本文非笔者原创,原文转载自:https://github.com/SecurityPaper/SecurityPaper-web/blob/master/_posts/2.SDL%E8%A7%8 ...
- SpringBoot(十三)-- 不同环境下读取不同配置
一.场景: 在开发过程中 会使用 开发的一套数据库,测试的时候 又会使用测试的数据库,生产环境中 又会切换到生产环境中.常用的方式是 注释掉一些配置,然后释放一下配置.SpringBoot提供了在不同 ...