mybatis學習筆記(6) ------ 緩存

mybatis學習筆記(6) ------ 緩存

緩存

緩存就是暫存數據的地方,mybatis提供緩存機制,將數據存儲在緩存中,下次查詢的時候,若緩存中存在需要的數據,就無需去數據庫中查找,可以提升性能。

一級緩存

在SqlSession中維護一個緩存,用來用來存放查找出來的數據,因此一級緩存只在同一個SqlSession對象中有效,不同的SqlSession都有屬於自己的HashMap,都有屬於自己的緩存。當調用commit方法之後,緩存會被清空。

演示

 @Test
    public void test8(){
        SqlSession sqlSession = factory.openSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User u1 = mapper.search(1);
        System.out.println(u1);
        System.out.println("=================");
        //sqlSession.commit();
        User u2 = mapper.search(1);
        System.out.println(u2);
    }

第一次會執行sql語句,第二次不會執行sql語句,直接從緩存中獲取。但當註釋解開之後,則第二次也會執行sql語句。
在這裏插入圖片描述

注: 當select元素中將flushCache設置爲true後,也會刷新緩存,這個值默認是false。

二級緩存

  • 需要手動開啓緩存
        <!--開啓二級緩存總開關,默認爲true-->
        <setting name="cacheEnabled" value="true"/>
  • 對應的映射文件中開啓緩存,在select標籤中開啓緩存
 <cache/>
 useCache="true" : 默認爲true,只與二級緩存有關
  • 主配置文件中開啓二級緩存

多個SqlSession共用一個SqlSessionFactory
當sqlSession執行close方法,就會將查詢的內容存入二級緩存中,下一次不同的sqlSession可以直接去緩存中找數據,找不到再去數據庫中查。
每一次增刪改之後,都會刷新緩存,一二級緩存都會被刷新。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章