日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Mybatis緩存機制

作者:魚跡 更新時間: 2023-12-19 編程語言

系列文章目錄

1、mybatis簡介及數據庫連接池
2、mybatis簡單使用
3、mybatis中selectOne的使用
4、mybatis中resultMap結果集的使用
5、mybatis實用教程之XML實現動態sql
6、Mybatis使用注解實現復雜動態SQL


Mybatis緩存機制

  • 系列文章目錄
  • 前言
  • 1、配置二級緩存
  • 2、使用場景:
  • 3、注意事項:


前言

MyBatis 提供了兩級緩存機制:一級緩存(本地緩存)和二級緩存(全局緩存)。一級緩存是默認開啟的,它是基于 SqlSession 級別的緩存,同一個 SqlSession 內相同的查詢會被緩存起來;二級緩存是跨 SqlSession 的緩存,它可以被多個 SqlSession 共享,需要在 Mapper 文件中顯式配置啟用。

一級緩存對于減少數據庫訪問,提高性能有一定幫助,但是僅限于同一個 SqlSession 內。而二級緩存則是跨 SqlSession 的,可以跨 Session 共享緩存結果,適用于跨 Session 但是相同查詢的情景。


1、配置二級緩存

  1. 在 MyBatis 的配置文件中開啟二級緩存:
<configuration>
    <settings>
        <setting name="cacheEnabled" value="true"/>
    </settings>
</configuration>
  1. 在需要使用二級緩存的 Mapper 文件中添加 <cache> 標簽:
<mapper namespace="com.example.mapper.UserMapper">
    <cache/>
    <!-- 其他 SQL 映射配置 -->
</mapper>

2、使用場景:

假設有一個用戶信息查詢的場景,多個不同的用戶查詢請求頻繁訪問相同的數據。

// UserMapper.java
public interface UserMapper {
    List<User> getAllUsers();
}
<!-- UserMapper.xml -->
<mapper namespace="com.example.mapper.UserMapper">
    <cache/>
    <select id="getAllUsers" resultType="User">
        SELECT * FROM users
    </select>
</mapper>
// 使用代碼
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-config.xml"));
try (SqlSession sqlSession = factory.openSession()) {
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

    // 第一次查詢
    List<User> users1 = userMapper.getAllUsers();
    // 再次查詢相同數據
    List<User> users2 = userMapper.getAllUsers();
}

3、注意事項:

  • 緩存的命中和失效機制:如果數據庫中數據被修改,會導致對應的緩存失效,需要注意緩存的更新策略。
  • 需要小心緩存帶來的數據一致性問題,在某些情況下需要手動清除緩存以保證數據的最新性。

這個示例展示了 MyBatis 的二級緩存配置和使用場景,但在實際應用中,需要根據業務情況和性能調優來決定是否使用緩存,并針對具體情況進行調整。

原文鏈接:https://blog.csdn.net/weixin_45915647/article/details/134754213

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新