怎么在myBatis组件中实现缓存

本篇文章给大家分享的是有关怎么在myBatis组件中实现缓存,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

装饰器模式uml类图

怎么在myBatis组件中实现缓存

举例:IO中输入流和输出流的设计BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream("c://a.txt"))

怎么在myBatis组件中实现缓存

三.MyBatis静态组件之缓存

怎么在myBatis组件中实现缓存

cache类定义了缓存的一些基本操作接口。

怎么在myBatis组件中实现缓存

cache基本操作的具体实现。

怎么在myBatis组件中实现缓存

在缓存基本实现类PerpetualCache的基础上,创建了不同的装饰器对缓存进行了功能的增强,例如BlockingCache实现的是阻塞的缓存,FifoCache使用先进先出策略,ScheduledCache定时清空缓存,现在以

BlockingCache为例说明mybatis缓存的具体实现。

怎么在myBatis组件中实现缓存

怎么在myBatis组件中实现缓存

怎么在myBatis组件中实现缓存

怎么在myBatis组件中实现缓存

BlockingCache锁机制可以作为一种防止缓存雪崩和缓存击穿的重要手段

CacheKey解读

Mybatis中涉及到动态SQL的原因,缓存项的key不能仅仅通过一个String来表示,所以通过CacheKey来封装缓存的Key值,CacheKey可以封装多个影响缓存项的因素;判断两个CacheKey是否相同关键是比较两个对象的hash值是否一致;

怎么在myBatis组件中实现缓存

怎么在myBatis组件中实现缓存

怎么在myBatis组件中实现缓存

Mybatis通过上述算法确定cacheKey是否一致,mybatis在查询数据库之前,回先查询缓存,同时调用生成cacheKey的算法,通过下列源码可知影响缓存的因素包括mappedStatment的id指定查询结果集的范围(分页信息) 查询所使用的SQL语句 用户传递给SQL语句的实际参

怎么在myBatis组件中实现缓存

总结:

mybatis缓存使用了装饰器模式,对基本缓存功能做了不同的程度,不同方向上的增强,同时通过cacheKey的源码分析,了解到影响缓存key的因素包括

以上就是怎么在myBatis组件中实现缓存,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。