序言我们平常工作中用到的spring框架中的事务的管理是通过Transcational注解来控制的声明式事务管理其底层是通过关闭事务自动提交手动提交事务来实现事务控制。JdbcTranscational.javaimport java.sql.*; public class JdbcTranscational { /** * mysql连接url */ private static final String URL jdbc:mysql://127.0.0.1:3306/test; /** * 数据库连接账号名 */ private static final String USER root; /** * 数据库连接密码 */ private static final String PASSWORD 123456; /** * mysql数据库驱动类名 */ private static final String DRIVER_NAME com.mysql.jdbc.Driver; /** * return java.sql.Connection * Author cuizx * Description 获取数据库连接 * Date 2019/8/23 21:39 * Param [] **/ private Connection getConnection() { Connection conn null; try { //加载mysql驱动类 Class.forName(DRIVER_NAME); //获取数据库连接 conn DriverManager.getConnection(URL, USER, PASSWORD); } catch (Exception e) { e.printStackTrace(); } return conn; } /** * return void * Author cuizx * Description 按照连接方式倒序关闭所有连接 * Date 2019/8/23 21:42 * Param [conn, stmt, resultSet] **/ private void closeConnection(Connection conn, Statement stmt, ResultSet resultSet) { try { if (resultSet ! null) { resultSet.close(); } if (stmt ! null) { stmt.close(); } if (conn ! null) { conn.close(); } } catch (Exception e) { e.printStackTrace(); } } /** * Author cuizx * Description 执行sql * Date 2020/11/21 * Param [sql] * return void **/ public void executeSql(String sql) { Statement stmt null; int result 0; Connection connection getConnection(); try { //JDBC中默认是true自动提交事务这里手动成false connection.setAutoCommit(false); //创建声明 stmt connection.createStatement(); //执行sql result stmt.executeUpdate(sql); System.out.println(执行结果 result); //提交事务 connection.commit(); } catch (Exception e) { try { //抛错后回滚 connection.rollback(); } catch (SQLException e1) { } } finally { closeConnection(connection, stmt, null); } } public static void main(String[] args) { String sql select * from user; String insertSql insert into user (id,userName) values(123,cuizx); String updateSql update user set userName 更新后 where id 123; String deleteSql delete from user where id 123; JdbcTranscational jdbcTranscational new JdbcTranscational(); jdbcTranscational.executeSql(insertSql); jdbcTranscational.executeSql(updateSql); jdbcTranscational.executeSql(deleteSql); } }pom.xml?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion groupIdcom.jdbctranscational/groupId artifactIdjdbctranscational/artifactId version1.0-SNAPSHOT/version dependencies !-- 导入Mysql数据库链接jar包 -- dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version5.1.30/version /dependency /dependencies /project以上便是事务控制的手动实现代码其中最核心的部分是关闭事务自动提交和异常后事务回滚1jdbc中autocommit默认为true每次sql执行都会自动提交事务而我们如果要自己来控制事务的话就必须将autocommit设置为false2connection.rollback()在catch块中进行事务的回滚也就是我们平常所知的抛出异常进行事务回滚