網站首頁 編程語言 正文
系列文章目錄
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、配置二級緩存
- 在 MyBatis 的配置文件中開啟二級緩存:
<configuration>
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
</configuration>
- 在需要使用二級緩存的 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
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-10-03 C++虛函數表與類的內存分布深入分析理解_C 語言
- 2022-10-10 NumPy?數組屬性的具體使用_python
- 2022-05-05 docker中通過nginx+confd動態生成配置的解決方案_docker
- 2023-06-20 k8s應用監控探針詳解_云其它
- 2022-05-25 Flutter實現倒計時功能_Android
- 2022-07-09 Docker可視化、數據持久化
- 2024-04-08 Linux 服務器連接方式
- 2022-07-24 Python使用apscheduler模塊設置定時任務的實現_python
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支