springboot 数据库操作事务提交回滚实现不同方式

1:使用@Transactional注解方式实现

*测试在@Test测试环境不可使用会直接回滚  原因暂未剖析

*该注解可直接表明在方法 类 接口上  不建议接口方式会失效

2:使用原生连接实现数据库事务管理  支持测试环境

@Testpublic void update() {Connection conn = null;Statement ps = null;Statement ps2 = null;String sql1 = "update user set last_name = 'sadggg' where id = 1";String sql2 = "update user set last_name = 'dfefgdsgnaskjfhjkf' where id = 2";try {conn = DBUtil.getConnection();conn.setAutoCommit(false);//编译第一条sqlps = conn.createStatement();ps.executeUpdate(sql1);//编译执行第二条sql这里可以使用插入一条异常语句或业务逻辑  我使用的是将sql超过列设置长度模拟执行失败ps2 = conn.createStatement();ps2.executeUpdate(sql2);conn.commit();} catch (Exception e) {e.printStackTrace();try {conn.rollback();} catch (SQLException throwables) {throwables.printStackTrace();}} finally {try {conn.setAutoCommit(true);} catch (SQLException e) {e.printStackTrace();}finally {DBUtil.closeResource(conn, ps);}}System.out.println("执行完毕");}

3:使用management  暂未实现后续补充其他方式


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

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部