赞
踩
1:使用@Transactional注解方式实现
*测试在@Test测试环境不可使用会直接回滚 原因暂未剖析
*该注解可直接表明在方法 类 接口上 不建议接口方式会失效
2:使用原生连接实现数据库事务管理 支持测试环境
- @Test
- public 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);
-
- //编译第一条sql
- ps = 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 暂未实现后续补充其他方式
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。