jdbc 以及 事务的java类编写
package com.gaosheng.utils;
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class JdbcUtil {
private static DataSource datasource = new ComboPooledDataSource(); //连接池对象
static ThreadLocal<Connection> t = new ThreadLocal();
private static Connection conn = null; //定义一个事务的专用连接
//获得连接池对象
public static DataSource getDatasource(){
return datasource;
}
//获得连接对象
public static Connection getConnection() throws SQLException{
conn = t.get();
if(conn == null) {
return datasource.getConnection();
}
return conn;
}
//开启事务方法
public static void beginTranscation() throws SQLException{
conn = t.get();
if(conn != null) {
throw new SQLException("事务已经开启,在没有结束当前事务时,不能再开启事务!");
}
conn = datasource.getConnection();
conn.setAutoCommit(false);
t.set(conn);
}
//提交事务的方法
public static void commitTransaction() throws SQLException{
conn = t.get();
if(conn == null) {
throw new SQLException("当前没有事务,所以不能提交事务!");
}
conn.commit();
conn.close();
//conn = null;
t.remove();
}
//回滚事物的方法
public static void rollbackTransaction() throws SQLException{
if(conn == null) {
throw new SQLException("当前没有事务,所以不能回滚事务!");
}
conn.rollback();
conn.close();
//conn = null;
t.remove();
}
}
package com.gaosheng.utils;
import java.sql.Connection;
import java.sql.SQLException;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
public class TxQueryRunner extends QueryRunner{
@Override
public int[] batch(String sql, Object[][] params) throws SQLException {
Connection conn = JdbcUtil.getConnection();
return super.batch(conn, sql, params);
}
@Override
public <T> T query(String sql, Object param, ResultSetHandler<T> rsh) throws SQLException {
Connection conn = JdbcUtil.getConnection();
return super.query(conn,sql, param, rsh);
}
/* (non-Javadoc)
* @see org.apache.commons.dbutils.QueryRunner#query(java.lang.String, java.lang.Object[], org.apache.commons.dbutils.ResultSetHandler)
*/
@Override
public <T> T query(String sql, Object[] params, ResultSetHandler<T> rsh) throws SQLException {
Connection conn = JdbcUtil.getConnection();
return super.query(conn,sql, params, rsh);
}
/* (non-Javadoc)
* @see org.apache.commons.dbutils.QueryRunner#query(java.lang.String, org.apache.commons.dbutils.ResultSetHandler, java.lang.Object[])
*/
@Override
public <T> T query(String sql, ResultSetHandler<T> rsh, Object... params) throws SQLException {
// TODO Auto-generated method stub
return super.query(sql, rsh, params);
}
/* (non-Javadoc)
* @see org.apache.commons.dbutils.QueryRunner#query(java.lang.String, org.apache.commons.dbutils.ResultSetHandler)
*/
@Override
public <T> T query(String sql, ResultSetHandler<T> rsh) throws SQLException {
// TODO Auto-generated method stub
return super.query(sql, rsh);
}
/* (non-Javadoc)
* @see org.apache.commons.dbutils.QueryRunner#update(java.lang.String)
*/
@Override
public int update(String sql) throws SQLException {
// TODO Auto-generated method stub
return super.update(sql);
}
/* (non-Javadoc)
* @see org.apache.commons.dbutils.QueryRunner#update(java.lang.String, java.lang.Object)
*/
@Override
public int update(String sql, Object param) throws SQLException {
// TODO Auto-generated method stub
return super.update(sql, param);
}
/* (non-Javadoc)
* @see org.apache.commons.dbutils.QueryRunner#update(java.lang.String, java.lang.Object[])
*/
@Override
public int update(String sql, Object... params) throws SQLException {
Connection conn = JdbcUtil.getConnection();
return super.update(conn,sql, params);
}
}
jdbc 以及 事务的java类编写的更多相关文章
- JDBC基础:JDBC快速入门,JDBC工具类,SQL注入攻击,JDBC管理事务
JDBC基础 重难点梳理 一.JDBC快速入门 1.jdbc的概念 JDBC(Java DataBase Connectivity:java数据库连接)是一种用于执行SQL语句的Java API,可以 ...
- 编写了几个Java类,但是一直运行某一个class,这种是因为:main方法写错
编写了几个Java类,但是一直运行某一个class,这种是因为:main方法写错
- 要创建一个EJB,必须要至少编写哪些Java类和接口?
要创建一个EJB,必须要至少编写哪些Java类和接口? A. 定义远程(或业务)接口 B. 定义本地接口 C. 定义Bean接口 D. 编写Bean的实现 解答:ABC
- Java初学者作业——编写 Java 程序,定义 Java 类 (Point) 用来表示坐标,坐标范围在(0,0)到(100,100)以内,并显示合法的坐标在控制台。
返回本章节 返回作业目录 需求说明: 编写 Java 程序,定义 Java 类 Point 用来表示坐标,坐标范围在(0,0)到(100,100)以内,并显示合法的坐标在控制台. 实现思路: 定义 P ...
- JDBC 4.0 开始Java操作数据库不用再使用 Class.forName加载驱动类了
JDBC 4.0 开始Java操作数据库不用再使用 Class.forName加载驱动类了 代码示例 转自 https://docs.oracle.com/javase/tutorial/jdbc/o ...
- 类的编写模板之简单Java类
简单Java类是初学java时的一个重要的类模型,一般由属性和getter.setter方法组成,该类不涉及复杂的逻辑运算,仅仅是作为数据的储存,同时该类一般都有明确的实物类型.如:定义一个雇员的类, ...
- Java -- JDBC 事务处理, 事务的隔离级别 脏读 不可重复读 等...
1. 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功. 数据库开启事务命令 •start transaction 开启事务 •Rollback 回滚事务 •Commit ...
- IDEA创建maven项目之后无法编写java类
在创建Maven web项目之后无法再java文件夹下面创建java类,这里我可以教一下大家 选择你的文件夹,鼠标点击右键,出现下图所显示的,你可以按照下图所显示的步骤进行操作
- [疯狂Java]JDBC:事务管理、中间点、批量更新
1. 数据库事务的概念: 1) 事务的目的就是为了保证数据库中数据的完整性. 2) 设想一个银行转账的过程,假设分两步,第一步是A的账户-1000,第二步是B的账户+1000.这两个动 ...
随机推荐
- Patch
http://www.cnblogs.com/cute/archive/2011/04/29/2033011.html zhezhelin diff和patch使用指南 diff和patch是一对工具 ...
- Flask源码浅析
前言 学习一样东西,要先知其然,然后知其所以然. 这次,我们看看Flask Web框架的源码.我会以Flask 0.1的源码为例,把重点放在Flask如何处理请求上,看一看从一个请求到来到返回响应都经 ...
- 51NOD 大数加法以及python写法
练练 大数加法一般为小学生式的"竖式计算"要特别注意的是借位与进位的问题(先给看c++写法,我怕先看了python写法,会看不下去c++写法)这题还有要注意的是 1.同符号的话,直 ...
- 把windows下的压缩包放到Linux目录下去
今天在自学redis时出现了问题,因为楼主linux也是空白纸,前几天安装了Linux后就只会基本的命令,其他的一概不通啊,所以当redis要在Linux中用时就傻眼了,索性就在windows中下载了 ...
- MyBatis的发展和选型
xlecho编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!! 参考 ...
- 解决The mysql extension is deprecated and will be removed
今天打开网站突然发现报错:“PHP Deprecated: mysql_connect(): The mysql extension is deprecated and will be remove ...
- Android实现广告页图片无限轮播
一.概述 对于一个联网的Android应用, 首页广告无限轮播基本已经成为标配了. 那么它是怎么实现的呢? 有几种实现方式呢? 二.无限轮播的实现 1.最常规的手段是用 ViewPager来实现 2. ...
- tomcat启动抛出异常
2018-5-26 15:55:47 org.apache.catalina.startup.VersionLoggerListener log信息: Server version: Apache T ...
- IO流——File类(文件流类)
java语言的输入输出操作是借助于输入输出包java.io来实现的,按传输方向分为输入流与输出流,从外设传递到应用程序的流为输入流,将数据从应用程序输入到外设的流为输出流. File类的构造方法: 1 ...
- Python—字符串和常用数据结构
目录 1. 字符串 2. 列表 2.1 列表的增删改查 2.2 列表的切片和排序 2.3 生成式语法 3. 元组 4.集合 5. 字典 5.1 字典的增删改查 5.2 字典的常见操作 序言:这一章我们 ...