Druid事务操作

1.首先我们创建bank表用于测试

CREATE TABLE bank(
id INT PRIMARY KEY,
username VARCHAR(255),
balance DOUBLE
);
INSERT INTO bank VALUES(1001,'郭靖',5000),
(1002,'黄蓉',8000),
(1003,'杨过',6000),
(1004,'小龙女',9000);

2.将数据库连接驱动、druid的jar包、dbutils包添加到项目库中。
3.创建druid.properties

#key=value
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/student?rewriteBatchedStatements=true
username=root
password=root
initialSize=10
minIdle=5
maxActive=20
maxWait=5000

4.创建druid的utils类。

package com.aura.druid.utils;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;/*** @author panghu* @description druid连接池的工具类* @create 2021-01-30-12:12*/
public class DruidUtils {public static Connection getConnection() throws Exception {Properties prop = new Properties();prop.load(DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties"));DataSource ds = DruidDataSourceFactory.createDataSource(prop);Connection conn = ds.getConnection();return conn;}public static void closeAll(Connection conn, Statement st, ResultSet rs) {try {if (rs != null) {rs.close();}if (st != null) {st.close();}if (conn != null) {conn.close();}} catch (SQLException e) {e.printStackTrace();}}
}

5.执行事务

package com.aura.druid.demo;import com.aura.druid.utils.DruidUtils;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;/*** @author panghu* @description druid事务* @create 2021-01-30-12:32*/
public class DruidTest4 {public static void main(String[] args) {Connection conn = null;PreparedStatement ps = null;try {conn = DruidUtils.getConnection();String sql = "UPDATE bank SET balance=? WHERE id=?";ps = conn.prepareStatement(sql);// 关闭自动提交,即开启事务conn.setAutoCommit(false);// 事务主体sqlps.setDouble(1, 3000);ps.setInt(2, 1001);ps.executeUpdate();//如果执行过程中发生了异常
//            int a = 10 / 0;ps.setDouble(1, 10000);ps.setInt(2, 1002);ps.executeUpdate();conn.commit(); //没有发生异常,提交事务} catch (Exception e) {e.printStackTrace();try {conn.rollback(); //发生异常,回滚} catch (SQLException e1) {e1.printStackTrace();}} finally {DruidUtils.closeAll(conn, ps, null);}}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部