日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Mybatis之SqlSession简析

發(fā)布時(shí)間:2023/12/10 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mybatis之SqlSession简析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在 MyBatis 中,SqlSession 是其核心接口。在 MyBatis 中有兩個(gè)實(shí)現(xiàn)類,DefaultSqlSession 和 SqlSessionManager。

SqlSession是Mybatis的一個(gè)核心類,簡單點(diǎn)就是執(zhí)行sql的,Mybatis的一級(jí)緩存應(yīng)該就在這個(gè)級(jí)別上的,實(shí)際上一級(jí)緩存在Executor中實(shí)現(xiàn)的,下個(gè)文章介紹。

先看看SqlSession中的方法

?


DefaultSqlSession 是單線程使用的,而 SqlSessionManager 在多線程環(huán)境下使用。SqlSession 的作用類似于一個(gè) JDBC 中的 Connection 對(duì)象,代表著一個(gè)連接資源的啟用。具體而言,它的作用有 3 個(gè):

  • 獲取 Mapper 接口。
  • 發(fā)送 SQL 給數(shù)據(jù)庫。
  • 控制數(shù)據(jù)庫事務(wù)。


先來掌握它的創(chuàng)建方法,有了 SqlSessionFactory 創(chuàng)建的 SqlSession 就十分簡單了,如下所示。

SqlSession sqlSession = SqlSessionFactory.openSession();

注意,SqlSession 只是一個(gè)門面接口,它有很多方法,可以直接發(fā)送 SQL。它就好像一家軟件公司的商務(wù)人員,是一個(gè)門面,而實(shí)際干活的是軟件工程師。在 MyBatis 中,真正干活的是 Executor,我們會(huì)在底層看到它。

SqlSession 控制數(shù)據(jù)庫事務(wù)的方法,如下所示。

//定義 SqlSession SqlSession sqlSession = null; try {// 打開 SqlSession 會(huì)話sqlSession = SqlSessionFactory.openSession();// some code...sqlSession.commit(); // 提交事務(wù) } catch (IOException e) {sqlSession.rollback(); // 回滾事務(wù) }finally{// 在 finally 語句中確保資源被順利關(guān)閉if(sqlSession != null){sqlSession.close();} } 這里使用 commit 方法提交事務(wù),或者使用 rollback 方法回滾事務(wù)。因?yàn)樗碇粋€(gè)數(shù)據(jù)庫的連接資源,使用后要及時(shí)關(guān)閉它,如果不關(guān)閉,那么數(shù)據(jù)庫的連接資源就會(huì)很快被耗費(fèi)光,整個(gè)系統(tǒng)就會(huì)陷入癱瘓狀態(tài),所以用 finally 語句保證其順利關(guān)閉。

總結(jié)

以上是生活随笔為你收集整理的Mybatis之SqlSession简析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。