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.这两个动 ...
随机推荐
- 在Linux查看版本命令
1.在终端中执行下列指令: cat /etc/issue 可以查看当前正在运行的 Ubuntu 的版本号. 2. 使用 lsb_release 命令也可以查看 Ubuntu 的版本号,与方法一相比,内 ...
- 【Offer】[3-1] 【找出数组中重复的数字】
题目描述 思路 Java代码 代码链接 题目描述 在一个长度为n的数组里的所有数字都在0~n-1的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次. 请找出数组中任 ...
- 《Java 8 in Action》Chapter 10:用Optional取代null
1965年,英国一位名为Tony Hoare的计算机科学家在设计ALGOL W语言时提出了null引用的想法.ALGOL W是第一批在堆上分配记录的类型语言之一.Hoare选择null引用这种方式,& ...
- 【第十篇】easyui-datagrid排序 (转)
本文体验datagrid的排序. □ 思路 当点击datagrid的标题,视图传递给Controller的Form Data类似这样:page=1&rows=10&sort=Custo ...
- 编写优雅代码,从挖掉恶心的if/else 开始
背景 长话短说, 作为开发人员经常需要根据条件灵活查询数据库,不管你是用rawsql 还是EFCore, 以下类似伪代码大家都可能遇到: /// <summary> /// 灵活查询 能耗 ...
- vue-router钩子函数实现路由守卫
接上一篇,我们一起学习了vue路由的基本使用以及动态路由.路由嵌套以及路由命名等知识,今天我们一起来学习记录vue-router的钩子函数实现路由守卫: 何为路由守卫?路由守卫有点类似于ajax的请求 ...
- HTML文档简介
HTML简介 HTML标签 html文档标签: html源代码就好像word文档,有特殊的语法结构定义自己的功能. html文档标签 html标签,其下由两个主要节点标签head.body. head ...
- 浅谈@RestController和@Controller的区别
在做Spring MVC开发时,如果对@RestController或者@Controller这两个注解理解不够清晰的话,就难免会出现用混的情况.而混用的结果往往是无法实现期望的跳转结果或者是直接将跳 ...
- 2018年秋招总结篇(Java)
博主开始找工作是10月10号,感觉可以出去找找工作,然后就去了,参加了多场面试.笔试,现在总结一下 1.笔试篇 String StringBuffer StringBuilder的区别? HashMa ...
- SPSS基础学习方差分析—单因素分析
为什么要进行方差分析? 单样本.两样本t检验其最终目的都是分析两组数据间是否存在显著性差异,但如果要分析多组数据间是否存在显著性差异就很困难,因此用方差分析解决这个问题:举例:t检验可以分析一个班男女 ...