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.这两个动 ...
随机推荐
- go Server示例
示例1: package main import ( "fmt" "log" "net/http" "time" ) f ...
- 什么是Werkzeug
上一节介绍了什么是WSGI,这一节我们看看Werkzeug 按照官方的说法,Werkzeug(源自德语,工具的意思)是一个WSGI工具库,它开始于一个适用于WSGI的多样化的工具集,后来发展成了现在非 ...
- Spring@Autowired java.lang.NullPointerException 空指针
在使用@Autowired注解注入出现的空指针 java.lang.NullPointerException 可能存在的错误原因: 1.注解的扫描有问题 在xml配置了这个标签后,spring可以 ...
- redis数据库学习
0 使用理由 0.1 高性能 纯内存操作,比在硬盘操作数据的速度有极大提升 0.2 高并发 承受请求比直接操作数据库大得多 0.3 单线程 至于redis单线程的原因.有点意思.CPU不是Redis的 ...
- ssh-agent代理的简单用法
前言 在ansible的官方文档中,提到了强烈推荐用ssh-agent来管理密钥 究竟ssh-agent是什么,它有什么用法呢,下面来一探究竟. ssh-agent是什么?用处是什么? ssh-age ...
- 024 实例5-身体质量指数BMI
目录 一."身体质量指数BMI"问题分析 1.1 身体质量指数BMI 1.2 问题需求 二."身体质量指数BMI"实例讲解 2.1 身体质量指标BMI 2.1. ...
- 警告:Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
执行Maven Install打包的时候,提示以下警告信息: [WARNING] Using platform encoding (GBK actually) to copy filtered res ...
- Android Q 正式命名为 Android 10
根据官方博文,谷歌已经公布了 Android Q 的名称,它并不是想以前一样,以甜食命名,也不是以任何以字母 Q 开头来命名,而是简单称它为 Android 10. 该公司表示,它正在改变其发布版本的 ...
- UGUI_冻结技能键盘点击触发
1.在某一张image图上添加Button组件,使其具有点击触发事件的功能: 2.outline组件 3.SkillItem脚本 using System.Collections; using Sys ...
- java树形结构工具类
一.树形结构数据一般都是以子父id的形式存在数据库中,查询的时候只是带有子id和parent_id的List集合 并不是树形结构,所以我们现在要将普通的List集合转换为树结构数据(本工具类扩展操作树 ...