數據庫事務設置方法
阿新 • • 發佈:2018-07-14
role ebooks pla 南方 設置 books style img ima
在Mybatis提供的兩種事務管理機制中,選擇使用JDBC的事務管理機制,也就是利用java.sql.Connection對象完成對事務的提交。
所必須導入的包為:import java.sql.Connection;
其中,所有的接口實現類統一格式為
try{
conn.setAutoCommit(false); //功能實現,例如插入、查找、刪除 sqlSession.commit(); } catch(Exception e){ e.printStackTrace(); sqlSession.rollback();finally{ sqlSession.close(); }
即可根據是否出現異常,決定是提交還是回滾,達到事務的要求。
註意,要將自動提交功能關閉。
例如如下代碼:
public class TestBooksMapper extends BeforeBooksMapper{ @Test public void testInsertUser(){ SqlSession sqlSession = getSqlSession(); Connection conn = sqlSession.getConnection();View Codetry{ conn.setAutoCommit(false); // 獲取RoleMapper接口 BooksMapper roleMapper = sqlSession.getMapper(BooksMapper.class); Books sysRole = new Books(); sysRole.setBookId("a11111111"); sysRole.setBookName("南方樹葉"); sysRole.setEdition("第一版"); sysRole.setOperation("3"); roleMapper.insertSelective(sysRole); Books sysRole1 = new Books(); sysRole1.setBookId("1111111"); // sysRole1.setBookName("西方樹葉"); sysRole1.setEdition("第8版"); sysRole1.setOperation("4"); roleMapper.insertSelective(sysRole1); sqlSession.commit(); } catch (Exception e) { e.printStackTrace(); System.out.println("Warning!"); sqlSession.rollback(); } finally{ sqlSession.close(); } } }
在第二本書的 new 的過程中,講書名部分註釋。因為要求書名不能為空,插入操作出現異常,轉入catch,進行回滾。
顯然,表中沒有記錄
若不設置自動提交,即代碼改如如下形式:
public class TestBooksMapper extends BeforeBooksMapper{ @Test public void testInsertUser(){ SqlSession sqlSession = getSqlSession(); Connection conn = sqlSession.getConnection(); try{ conn.setAutoCommit(true); // 獲取RoleMapper接口 BooksMapper roleMapper = sqlSession.getMapper(BooksMapper.class); Books sysRole = new Books(); sysRole.setBookId("a11111111"); sysRole.setBookName("南方樹葉"); sysRole.setEdition("第一版"); sysRole.setOperation("3"); roleMapper.insertSelective(sysRole); Books sysRole1 = new Books(); sysRole1.setBookId("1111111"); // sysRole1.setBookName("西方樹葉"); sysRole1.setEdition("第8版"); sysRole1.setOperation("4"); roleMapper.insertSelective(sysRole1); sqlSession.commit(); } catch (Exception e) { e.printStackTrace(); System.out.println("Warning!"); sqlSession.rollback(); } finally{ sqlSession.close(); } } }View Code
則第一個插入操作執行完後,已經被提交
表中也出現了第一本書的信息。
數據庫事務設置方法