事务简介

  1. 事务:事务是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。
  2. 事务操作流程:
    • 开启事务
    • 提交事务
    • 回滚事务

JDBC中事务处理特点
在JDBC中,使用Connection对象来管理事务,默认为自动提交事务。可以通过setAutoCommit(boolean autoCommit)方法设置事务是否自动提交,参数为boolean类型,默认值为true,表示自动提交事务,如果值为false则表示不自动提交事务,需要通过commit方法手动提交事务或者通过rollback方法回滚事务。

事务实现

  1. import java.sql.Connection;
  2. import java.sql.PreparedStatement;
  3. /**
  4. * 批量添加数据方式二(数据量大)
  5. * 支持事务回滚
  6. */
  7. public void addBatch_2(){
  8. Connection connection = null;
  9. PreparedStatement preparedStatement = null;
  10. try {
  11. connection = JDBCUtils.getConnection();
  12. //设置事务的提交方式,将自动提交改为手动提交
  13. connection.setAutoCommit(false);
  14. preparedStatement = connection.prepareStatement("insert into users values (default ,?,?)");
  15. //参数绑定
  16. for(int i=0;i<1000;i++){
  17. preparedStatement.setString(1,"laogeng"+i);
  18. preparedStatement.setInt(2,20);
  19. //缓存sql
  20. preparedStatement.addBatch();
  21. if(i%500==0){
  22. preparedStatement.executeBatch();
  23. //清缓存
  24. preparedStatement.clearBatch();
  25. }
  26. }
  27. //手动提交事务
  28. JDBCUtils.commit(connection);
  29. }catch (Exception e){
  30. e.printStackTrace();
  31. JDBCUtils.rollBack(connection); //回滚
  32. }finally {
  33. JDBCUtils.clossResource(preparedStatement,connection);
  34. }
  35. }
  36. public static void main(String[] args) {
  37. AddBatchTest addBatchTest = new AddBatchTest();
  38. addBatchTest.addBatch_2();
  39. }
  40. }