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.这两个动 ...
随机推荐
- 基于注解的读取excel的工具包
easyexcel-wraper easyexcel-wraper是什么? 一个方便读取excel内容,且可以使用注解进行内容验证的包装工具 easyexcel-wraper有哪些功能? 在easye ...
- 用break语句强制结束循环
以使用二重循环显示九九乘法表的程序代码为例: #include<stdio.h> int main() { int i,j; ;i<=;i++){ ;j<=;j++) prin ...
- 【Offer】[43] 【1~n整数中1出现的次数】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入一个整数n,求1~n这n个整数的十进制表示中1出现的次数.例如,输入12, 1~12这些整数中包含1的数字有1.10.11和12,1 ...
- pip的使用
目录 一.配置pip环境变量 二.Cmd终端使用pip 三.Pycharm使用pip 四.Jupyter使用pip 如果把python假想成一部手机,那么pip就是这部手机上的应用管家/APP,他可以 ...
- Java的异常:Error与Exception
一. 异常机制的概述 异常机制是指当程序出现错误后,程序如何处理.具体来说,异常机制提供了程序退出的安全通道.当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器. 程序错误分 ...
- 使用 Docker 安装 showdoc
一.简介 ShowDoc 是一个非常适合IT团队在线共享文档的工具,在线访问地址为:https://www.showDoc.cc 本来也可以直接 pull showdoc 镜像到本地,使用 docke ...
- redis的安装和pip连接
一.首先说说我的环境. 操作系统:Ubuntu16.04 能联网(使用了桥接方式) 二.安装redis cd进一个文件夹. 控制台输入 weget http ...
- 使用Git工具批量拉取代码
公司项目比较多,每天上班第一件事就是拉取代码,cd A 目录 git pull cd .. cd B ...... 一个项目一个项目的拉取,感觉也是很费劲的,那么有没有什么一键操作呢 现在执行一个命令 ...
- 浅谈Spring的事务隔离级别与传播性
浅谈Spring的事务隔离级别与传播性 这篇文章以一个问题开始,如果你知道答案的话就可以跳过不看啦@(o・ェ・)@ Q:在一个批量任务执行的过程中,调用多个子任务时,如果有一些子任务发生异常,只是回滚 ...
- Scrapy项目 - 数据简析 - 实现豆瓣 Top250 电影信息爬取的爬虫设计
一.数据分析截图(weka数据分析截图 ) 本例实验,使用Weka 3.7对豆瓣电影网页上所罗列的上映电影信息,如:标题.主要信息(年份.国家.类型)和评分等的信息进行数据分析,Weka 3.7数据分 ...