Mybatis缓存

Posted WCK的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis缓存相关的知识,希望对你有一定的参考价值。

mybatis缓存

1.缓存介绍

缓存是一种临时存储少量数据至内存或者是磁盘的一种技术.减少数据的加载次数,可以降低工作量,提高程序响应速度缓存的重要性是不言而喻的。

MyBatis的缓存将相同查询条件的SQL语句执行一遍后所得到的结果存在内存或者某种缓存介质当中,当下次遇到一模一样的查询SQL时候不在执行SQL与数据库交互,而是直接从缓存中获取结果,不再查询数据库,提升了性能;尤其是在查询越多、缓存命中率越高的情况下,使用缓存对性能的提高更明显。

MyBatis分为一级缓存和二级缓存,同时也可配置关于缓存设置。一级存储是SqlSession上的缓存,二级缓存是在SqlSessionFactory(namespace)上的缓存。默认情况下,MyBatis开启一级缓存,没有开启二级缓存。当数据量大的时候可以借助一些第三方缓存框架或Redis缓存来协助保存Mybatis的二级缓存数据。

2.一级缓存

一级缓存是SqlSession级缓存。只要是同一个SqlSession对象(必须是同一个)调用同一个<select>标签相同参数值时(不同<select>完全相同的SQL不会走同一个缓存),将直接使用缓存数据,而不会访问数据库。

重要提示:

​ 一级缓存想要生效,必须同时满足3个条件:

  1. 同一个SqlSession对象。
  2. 同一个select标签。本质为底层同一个JDBC的Statemen对象
  3. 完全相同的SQL,包含SQL的参数值也必须相同

insert、de

以上是关于Mybatis缓存的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis源码分析五MyBatis的缓存

mybatis二级缓存默认开启吗?

MyBatis缓存专题-一文彻底搞懂MyBatis一级缓存

MyBatis缓存专题-一文彻底搞懂MyBatis一级缓存

转MyBatis学习总结——Mybatis缓存

MyBatis缓存