MyBatis 怎么使用缓存防止重复查询数据库

千敏姑娘_7167

千敏姑娘_7167

2026-08-08

804人浏览

原创

MyBatis缓存核心是一级缓存默认自动生效、二级缓存需手动配置,查询时按“二级缓存→一级缓存→数据库”优先级执行;一级缓存作用于单个SqlSession内相同查询,二级缓存跨SqlSession共享但要求Mapper开启且实体类实现Serializable。

mybatis 怎么使用缓存防止重复查询数据库

MyBatis 用缓存防重复查库,核心是靠**一级缓存自动生效 + 二级缓存按需开启**,不是“手动存取”,而是框架在查询流程中自动拦截、命中、写入。关键在于理解它怎么走、什么时候生效、哪些操作会让它失效。

一级缓存:同一请求内自动挡(默认就起作用)

只要没关 SqlSession,同一个会话里查相同 SQL 和参数,第二次起直接返回内存对象,不发 SQL。

  • 不用配、不能关,开箱即用
  • 适用场景:一次 HTTP 请求里多次查同一条数据(比如先查用户,再查该用户的权限,再查其角色)
  • 注意:不同请求 → 不同 SqlSession → 缓存不共享,所以它只管“单次请求内的省查”

二级缓存:跨请求共享数据(需要三步手动配)

想让多个请求共用一份缓存(比如所有用户查 id=1 的商品都从缓存拿),就得开二级缓存。必须同时满足:

  • 全局开关打开:(mybatis-config.xml,默认就是 true)
  • Mapper 文件里声明: 或 @CacheNamespace 注解
  • 查询返回的实体类实现 Serializable 接口(因为要序列化存到共享缓存里)

缓存不是万能的:这些操作会让它清空

MyBatis 主动保一致,一有写操作就清缓存,避免读到旧数据:

Java调试
Java调试

通过 JDWP 实现 Java 远程调试:连接远程 JVM、设置断点、单步执行代码、查看变量值、获取调用栈。适用于需要调试远程 Java 应用、排查运行时状态、追踪代码执行流程的场景。 术语注解 JDWP:Java Debug Wire Protocol,Java 调试有线协议(Java 远程调试底层通信协议) remote JVM:远程 Java 虚拟机 step through code:代码单步调试(步入 / 步过 / 步出调试) inspect variables:变量查看 / 变量检视 stac

下载
  • 执行了 INSERT、UPDATE、DELETE 语句(哪怕改的是另一张表)
  • 调用了 sqlSession.commit()、sqlSession.rollback() 或 sqlSession.close()
  • 显式调用 sqlSession.clearCache()

查数据时的实际路径(优先级从高到低)

每次 select 执行,MyBatis 按顺序检查:

  • 先看二级缓存(如果开了)→ 命中就返回
  • 没命中,再看一级缓存(当前 SqlSession 里有没有)→ 命中就返回
  • 两级都没命中,才真正查数据库 → 结果同时写进一级缓存,提交后还会刷进二级缓存(如果开了)

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

java

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
mybatis一级缓存和二级缓存
mybatis一级缓存和二级缓存

在MyBatis中,一级缓存和二级缓存是两种不同级别的缓存机制,它们都可以用来提高性能。本专题提供mybatis一级缓存和二级缓存相关文章,大家可以免费阅读。

2023.08.21

583

4

ibatis和mybatis有什么区别
ibatis和mybatis有什么区别

ibatis和mybatis的区别:1、基本信息不同;2、开发时间不同;3、功能与易用性;4、配置文件;5、入参类型与出参类型;6、返回结果集接受方式;7、语法差异;8、数据库方言支持;9、插件支持;10、社区活跃度;11、全球化支持。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

2922

5

mybatis如何配置数据库连接
mybatis如何配置数据库连接

mybatis配置数据库连接的方法:1、指定数据源;2、配置事务管理器;3、配置类型处理器和映射器;4、使用环境元素;5、配置别名。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

446

5

mybatis工作原理及流程是什么
mybatis工作原理及流程是什么

mybatis工作原理及流程:1、配置文件;2、接口与映射;3、sql解析与生成;4、执行计划;5、结果处理;6、动态sql;7、缓存机制;8、插件;9、事务管理;10、日志与监控;11、扩展性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

292

4

hibernate和mybatis有哪些区别
hibernate和mybatis有哪些区别

hibernate和mybatis的区别:1、实现方式;2、性能;3、对象管理的对比;4、缓存机制。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

302

5

Java MyBatis框架
Java MyBatis框架

本专题专注于Java主流ORM框架MyBatis的应用,系统讲解SQL映射、动态SQL、结果映射、分页查询、缓存机制与多表关联等核心内容,并结合企业管理系统、电商平台和后台管理项目实战,帮助学员全面掌握高效的数据库持久层开发技能。

2025.08.26

6309

22

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习