1. 程式人生 > >數據庫事務設置方法

數據庫事務設置方法

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();
        
try{ 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(); } } }
View Code

在第二本書的 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

則第一個插入操作執行完後,已經被提交

技術分享圖片

表中也出現了第一本書的信息。

數據庫事務設置方法