JDBC工具类,基于C3P0的数据库连接池,提供获取连接池、获取连接对象、释放资源和封装事务操作的方法...
/**
*
* JDBC工具类,基于C3P0数据库连接池的实现
*
* @author 周瑜
* @2018年5月7日 下午2:13:20
*/
public final class JDBCUtils {
/**
* 使用C3P0-config中默认配置,创建数据库连接池对象
*/
private static final DataSource dataSource = new ComboPooledDataSource();
/**
* 返回数据库连接池对象
*
* @return
*/
public static final DataSource getDataSource() {
return dataSource;
}
/**
* 定义一个ThreadLocal对象,用来保存当前线程的连接对象
*/
private static final ThreadLocal<Connection> LOCAL = new ThreadLocal<>();
/**
* 返回数据库连接对象
*
* @throws SQLException
*/
public static final Connection getConnection() throws SQLException {
Connection conn = LOCAL.get();
if (conn == null) {
conn = dataSource.getConnection();
LOCAL.set(conn);
}
return conn;
}
/**
* 用于定义需要在事务中执行的逻辑代码
*
* @param <T>:事务中业务逻辑执行完毕后要返回的数据的类型
* @author 周瑜
*/
public static interface TransactionHandler<T> {
public T execute();
}
/**
* 处理事务操作
* @param handler
* @return
*/
public static final <T> T executeTransaction(TransactionHandler<T> handler) {
Connection conn = null;
T t = null;
try {
conn = JDBCUtils.getConnection();
conn.setAutoCommit(false);// 开启事务
// 执行需要在事务中执行的业务逻辑代码
t = handler.execute();
conn.commit();// 提交事务
} catch (Exception e) {
e.printStackTrace();
if (conn != null) {
try {
conn.rollback();// 回滚事务
} catch (SQLException e1) {
e1.printStackTrace();
}
}
} finally {
// 将连接对象从ThreadLocal中移除
LOCAL.remove();
}
return t;
}
/**
* 关闭并释放JDBC中资源对象
* @param closes
*/
public static final void release(AutoCloseable... closes) {
if(closes != null && closes.length > 0) {
for (AutoCloseable autoCloseable : closes) {
if(autoCloseable != null) {
try {
autoCloseable.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
}
转载于:https://www.cnblogs.com/zhou-yu/p/9293987.html
JDBC工具类,基于C3P0的数据库连接池,提供获取连接池、获取连接对象、释放资源和封装事务操作的方法...相关推荐
- 【工具类】JDBCUtils,数据库连接池
JDBC 概念:Java DataBase Connectivity Java 数据库连接, Java语言操作数据库 * JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即 ...
- java jdbc工具类抽取_JavaWeb入门(三):JDBC工具类的抽取
一.通过上篇文章,我们已经可以使用JDBC对数据库中的表进行增删改查啦(JDBC的基本使用:https://www.cnblogs.com/Infancy/p/12499806.html),我们对上篇 ...
- MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)...
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- 10.statement对象实例(executeUpdate方法以及executeQuery方法),JDBC工具类编写
1.JDBC工具类: 2.增删改:executeUpdate() 删除指定数据: 插入一条数据: 更新数据: 3.查:executeQuery() statement对象:Statement 是 Ja ...
- 抽取JDBC工具类的方法
抽取JDBC工具类的方法 抽取JDBC工具类 目的:简化书写 抽取JDBC工具类 目的:简化书写 分析: 1.注册驱动抽取 2.抽取一个方法获取连接对象 需求:不想传递参数(麻烦),还得保证工具类的通 ...
- JDBC 快速入门JDBC 抽取JDBC工具类:JDBCUtils
文章目录 JDBC 快速入门JDBC 抽取JDBC工具类:JDBCUtils JDBC 概念:java database Connectivity java 数据库连接,java语言操作数据库 JDB ...
- 二、SQL注入使用占位符解决、JDBC工具类、封装
一.SQL注入使用占位符解决 //使用jdbc发送sql语句, 到数据库tb_user 查询是否有该用户名和密码的用户Connection conn = null;PreparedStatement ...
- jdbc工具类 配置版本 20210412_222527.mp4
jdbc工具类 配置版本 20210412_222527.mp4 编写jdbc工具类,要求,代码要灵活,可随时变更登陆用户与连接的数据库 分析: 可以使用基本的写法加上配置 让配置来提供变化的数据 避 ...
- Java JDBC工具类
虽然现在都有框架封装 , 基本没人用这个了 . 但是如果经常在N个环境N个数据库之间查询数据 , 偶尔用下这个也是挺方便的~ package com.xbz;import com.alibaba.f ...
最新文章
- 算法试题 - 找出最小 k 个数
- Google Map API V3调用arcgis发布的瓦片地图服务
- python3+django写的个人笔记博客
- oss可用性_对象存储OSS详解
- Runtime底层原理--动态方法解析总结
- occ-backend-base-url 的相关代码,如何调试?
- Redis:12---有序集合对象
- JMS学习二(简单的ActiveMQ实例)
- 【网络安全面试题】—如何注入攻击Java Python PHP等主流语言
- Linux shell脚本详解及实战(一)——shell简介、shell变量及脚本规范
- 启动mysql显示FAILED_转mysql提示mysql daemon failed to start 启动不了的解决办法
- 价值连城 神经网络- 吴恩达Andrew Ng Coursera Neural Networks and Deep Learning
- 闭环系统的零极点图判定稳定性_零极点与系统稳定关系 拉氏变换的收敛域...
- shopnc怎么使用 php,ShopNC单用户版/安装php
- an error occurred while creating opening the c++ browsing database 解决办法
- Java项目中这样打印错误日志,排查问题更高效
- oracle数据库设计思维导图,Oracle
- pdf to word android,PDF to Word Converter
- PWM占空比,频率,周期之间关系
- 中国证券市场之[主板、中小板、创业板、科创板、新三板]
热门文章
- 开源安卓播放器:Dolphin Player 简单分析
- java制作纯字rpg小游戏_求java rpg小游戏源代码 最好是文字rpg 不需要很复杂 只是交作业用...
- linux 无损拆分分区 asm,利用UDEV SCSI Rules配置linux下的ASM
- mysql中log_mysql中log
- Cache 和 Buffer 有什么区别?
- web.xml中/和/*的区别
- DB2 exception: Cannot create PoolableConnectionFactory SQLCODE=-142
- php odbc 结果集处理,php常用ODBC函数集的简单示例
- python的数值类型和运算符_python学习笔记之数据类型---数字类型及运算符
- samba服务器_win10 更新导致无法连接samba服务器