教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Mybatis一級緩存、二級緩存

更新時間:2023年04月20日14時50分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓

  Mybatis 是一個流行的Java ORM(Object-Relational Mapping)框架,用于將數(shù)據(jù)庫和Java對象之間進行映射。Mybatis框架提供了一級緩存和二級緩存,以提高應用程序的性能。

  一級緩存:

  Mybatis的一級緩存是默認開啟的,它是指在同一個SqlSession對象中,如果執(zhí)行了相同的查詢語句,那么第二次執(zhí)行時,Mybatis將會從緩存中獲取查詢結果,而不是再次去執(zhí)行SQL語句。這可以顯著提高查詢的性能。一級緩存是作用于SqlSession級別的,也就是在同一個SqlSession中執(zhí)行的查詢語句才會使用相同的緩存。

  下面是一個簡單的代碼演示:

SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 第一次查詢
User user1 = userMapper.selectById(1);
// 第二次查詢,從緩存中獲取結果
User user2 = userMapper.selectById(1);

  在上面的代碼中,第一次查詢時,Mybatis會執(zhí)行SQL語句并將結果存入緩存。第二次查詢時,Mybatis會從緩存中獲取結果,而不是再次執(zhí)行SQL語句。

  二級緩存:

  Mybatis的二級緩存是作用于Mapper級別的。它可以將同一個Mapper下的查詢結果緩存到內(nèi)存中,以減少對數(shù)據(jù)庫的訪問次數(shù)。當多個SqlSession對象都使用同一個Mapper時,它們可以共享這個緩存。二級緩存默認是關閉的,需要手動進行配置。

  下面是一個簡單的代碼演示:

// 配置 UserMapper.xml 文件
<cache type="org.mybatis.caches.ehcache.EhcacheCache"/>

// 在 Mybatis 配置文件中啟用二級緩存
<settings>
  <setting name="cacheEnabled" value="true"/>
</settings>

SqlSession sqlSession1 = sqlSessionFactory.openSession();
UserMapper userMapper1 = sqlSession1.getMapper(UserMapper.class);
// 第一次查詢,從數(shù)據(jù)庫中獲取結果
User user1 = userMapper1.selectById(1);

// 開啟新的 SqlSession
SqlSession sqlSession2 = sqlSessionFactory.openSession();
UserMapper userMapper2 = sqlSession2.getMapper(UserMapper.class);
// 第二次查詢,從緩存中獲取結果
User user2 = userMapper2.selectById(1);

  在上面的代碼中,第一次查詢時,Mybatis會執(zhí)行SQL語句并將結果存入緩存。第二次查詢時,Mybatis會從緩存中獲取結果,而不是再次執(zhí)行SQL語句。這是因為第二個SqlSession對象與第一個SqlSession對象共享同一個Mapper的二級緩存。需要注意的是,為了使用二級緩存,需要將Mapper對象進行序列化,否則會出現(xiàn)序列化異常。

0 分享到:
和我們在線交談!