国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

深入理解Mybatis二級緩存

2019-11-26 13:25:22
字體:
來源:轉載
供稿:網友

上篇文章給大家介紹了mybatis一級緩存,有需要的朋友可以參考下。

與一級緩存相比,二級緩存范圍更大了一些,可以被多個SqlSession所共用。

同樣是發送同樣的查詢sql會先去緩存中找,找不到再去查詢數據庫。

每個namespace的mapper都會有自己的一個緩存的空間。

如果兩個mapper的namespace相同,執行mapper查詢到的數據將存儲到相同的二級緩存.

同樣如果有sqlSession執行了commit 會清空二級緩存.

配置文件(不用配置也是默認開啟的):

在sqlMapConfig.xml中:

<setting name="cacheEnabled" value="true"/> 

在相應的mapper.xml中:

<cache/>

如果不需要二級緩存,可以在設置禁用二級緩存

<select useCache="false"></select>

這樣每次都是從數據庫中讀取

在執行insert,update,delete后會刷新緩存(清空緩存),可以設置不刷新

一般不予設置,設置可能會導致臟讀.

<insert flushCache="false"></insert>

小例子:

SqlSession session1 = factory.openSession();   SqlSession session2 = factory.openSession();   SqlSession session3 = factory.openSession();   UserMapper mapper1 = session1.getMapper(UserMapper.class);   UserMapper mapper2 = session2.getMapper(UserMapper.class);   UserMapper mapper3 = session3.getMapper(UserMapper.class);   //第一次請求,查詢id為1的用戶   User user1 = mapper1.findUserById(1);   System.out.println(user1);   //close 將數據寫入二級緩存   session1.close();   //清空二級緩存,UserMapper下的   user1.setUsername("mmm");   mapper3.updateUser(user1);   session3.commit();   //第二次查詢會從緩存中找   User user2 = mapper2.findUserById(1);   System.out.println(user2);   session2.close();

注意此處要進行二級緩存的對象必須實現Serilizable接口,因為這些緩存數據可能會反序列化寫到硬盤或者其他地方。

以上所述是小編給大家介紹的Mybatis二級緩存,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中江县| 鄂州市| 蓝田县| 舞钢市| 浙江省| 凤城市| 唐山市| 吴川市| 郴州市| 南澳县| 奉化市| 石林| 苏州市| 建宁县| 岚皋县| 连云港市| 林州市| 德清县| 城固县| 项城市| 晋江市| 湛江市| 珠海市| 虎林市| 城市| 通河县| 大兴区| 南雄市| 务川| 剑川县| 舞阳县| 长岭县| 旬邑县| 基隆市| 来安县| 儋州市| 义马市| 海城市| 库车县| 沭阳县| 南通市|