SqlSession
在MyBatis中,SqlSession是其和新街口。在MyBatis中有兩個實作類,DefaultSqlSession和SqlSessionManager。DefaultSqlSession是單線程使用的,而SqlSessionManager是在多線程環境下使用的。
SqlSession的作用類似于一個JDBC中的Connection對象,代表着一個連接配接資源的啟用。具體而言,它的作用有3個:
- 擷取Mapper接口
- 發送SQL給資料庫
- 控制資料庫事務
從上一篇文章中我們已經知道了怎麼建立SqlSessionFactory,通過SqlSessionFactory的方法,我們可以直接建立處SqlSession對象,代碼如下:
SqlSession sqlSession = SqlSeesionFactory.openSession();
建立出SqlSession對象,我們可以通過SqlSession對象來控制資料庫的事務:
//定義SqlSession
SqlSession sqlSession = null;
try{
//打開SqlSession會話
sqlSession = SqlSessionFactory.openSession();
//業務邏輯代碼.....
// 送出事務
sqlSession.commit();
}catch(Exception ex){
//事務復原
sqlSession.rollback();
}finally{
//在finally語句中確定資源順利關閉
if(sqlSession != null){
sqlSession.close();
}
}
上述代碼中,使用commit方法送出事務,出錯後通過rollback復原事務,保證了代碼運作時的資料的一緻性。