开启缓存
默认情况下,缓存没有开启。要开启缓存,在SQL的映射文件中加入
<cache/>
其作用为
映射语句文件中的所有 select 语句将会被缓存。
映射语句文件中的所有 insert,update 和 delete 语句会刷新缓存。
缓存会使用 Least Recently Used(LRU,最近最少使用的)算法来收回。
根据时间表(比如 no Flush Interval,没有刷新间隔),缓存不会以任何时间顺序来刷新。
缓存会存储列表集合或对象(无论查询方法返回什么)的 1024个引用。
缓存会被视为是 read/write(可读/可写)的缓存,意味着对象检索不是共享的,而且可以安全地被调用者修改,而不干扰其他调用者或线程所做的潜在修改。
设置缓存属性
<cache
eviction="FIFO"
flushInterval="60000
size="512"
readOnly="true"/>
这个含义是,回收策略为先进先出。最多保存512个引用,引用返回的对象是只读的,每隔60秒刷新一次
可用的收回策略有:
LRU – 最近最少使用的:移除最长时间不被使用的对象。
FIFO – 先进先出:按对象进入缓存的顺序来移除它们。
SOFT – 软引用:移除基于垃圾回收器状态和软引用规则的对象。
WEAK – 弱引用:更积极地移除基于垃圾收集器状态和弱引用规则的对象
默认的是 LRU。
自定义缓存
<cache type=”com.domain.something.MyCustomCache”/>
定义的缓存要实现以下接口即可
public interface Cache {
String getId();
int getSize();
void putObject(Object key, Object value);
Object getObject(Object key);
boolean hasKey(Object key);
Object removeObject(Object key);
void clear();
ReadWriteLock getReadWriteLock();
}
调用自定义缓存的方法
<cache type=”com.domain.something.MyCustomCache”>
<property name=”cacheFile” value=”/tmp/my-custom-cache.tmp”/>
</cache>
这会调用MyCustomCache的setCacheFile方法
在语句上设置缓存
<select ... flushCache=”false” useCache=”true”/>
<insert ... flushCache=”true”/>
<update ... flushCache=”true”/>
<delete ... flushCache=”true”/>
如果当前映射文件要使用别的映射文件中的缓存设置
<cache-ref namespace=”com.someone.application.data.SomeMapper”/>
分享到:
相关推荐
3. **配置MyBatis**:在MyBatis的配置文件(mybatis-config.xml)中,启用二级缓存并指定使用Redis作为缓存实现。添加如下配置: ```xml <plugin interceptor="com.example.mybatis.redis....
#### 一、MyBatis缓存机制概述 在MyBatis中,缓存是一项重要的性能优化措施。它能够显著减少数据库的访问次数,提高应用程序的响应速度。MyBatis提供了两种级别的缓存支持:一级缓存和二级缓存。 - **一级缓存**:...
3. **缓存雪崩**:多个缓存同时过期可能导致大量请求涌向数据库,设置合理的缓存过期时间以及采用随机过期策略可以避免这种情况。 4. **缓存击穿**:热点数据的缓存失效,导致数据库压力骤增。可以使用互斥锁(如...
"深入理解MyBatis中的一级缓存与二级缓存" MyBatis是一种流行的持久层框架,它提供了缓存机制来提高应用程序的性能。在MyBatis中,有两种类型的缓存:一级缓存和二级缓存。下面我们将深入了解MyBatis中的一级缓存和...
3. 集成到MyBatis:在MyBatis的配置文件中,指定使用EhCache作为二级缓存的实现,并引用之前创建的ehcache.xml配置。 4. 开启Mapper缓存:在每个需要二级缓存的Mapper接口或XML文件中,启用对应的缓存配置。 通过...
**一、MyBatis缓存概念** MyBatis的缓存分为一级缓存和二级缓存。一级缓存是SqlSession级别的,同一个SqlSession内的相同SQL语句不会重复执行,而是直接从缓存中获取结果。然而,一级缓存存在生命周期问题,当...
Mybatis缓存机制是数据库操作中的重要组成部分,它能够提高数据访问效率,减少对数据库的重复查询。在Mybatis中,缓存分为一级缓存和二级缓存,这两种缓存各有其特点和应用场景。 一级缓存是SqlSession级别的缓存,...
3. 当SqlSession提交事务时,一级缓存中的数据会被复制到二级缓存中。 4. 如果其他SqlSession执行相同的查询,会先查看二级缓存,找到则返回,否则查询数据库并更新二级缓存。 需要注意的是,二级缓存对数据一致性...
在创建 SqlSessionFactory 时,可以设置缓存相关的配置。 3. **SqlSession**:执行 SQL 查询的主要接口,内部包含了对一级缓存的操作。在执行 CRUD 操作后,结果会被放入一级缓存。 4. **Mapper**:MyBatis 映射器...
Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。它将SQL语句与Java代码解耦,使开发者能更专注于SQL的编写,提高了数据库操作的效率和灵活性。 3. **EasyUI**:EasyUI是一个基于jQuery的UI组件库,...
本教程“Mybatis系列教程Mybatis缓存共17页”旨在深入解析Mybatis的缓存功能。 在Mybatis中,缓存分为一级缓存和二级缓存。一级缓存是SqlSession级别的,同一个SqlSession内的多次相同查询会复用第一次查询的结果,...
在Mybatis的配置文件中,可以通过`<settings>`标签的`localCacheScope`属性来设置一级缓存的行为,但通常无需手动配置,因为默认设置已经足够。 **一级缓存工作流程及源码分析** 一级缓存的工作流程如下: 1. 当...
2. **二级缓存**:在 MyBatis 的配置文件中,设置 `<cache>` 标签开启全局二级缓存: ```xml ``` 在对应的 Mapper 映射文件中,使用 `<cache>` 标签配置具体的缓存策略: ```xml ``` 其中,`...
开启MyBatis的缓存功能,需要在Mapper的XML配置文件中添加`<cache>`标签,并可以设置相应的属性,如 eviction(清除策略)、flushInterval(刷新间隔)、size(缓存大小)、readOnly(只读)等。例如: ```xml ```...
mybatis支持缓存,如果我们查找数据库中某一条记录时,先从缓存中获取,如果缓存中不存在该记录,则从数据库中获取,在放入到缓存中。该文档是关于mybatis使用一级或二级缓存的介绍
MyBatis二级缓存是MyBatis框架中的一个重要特性,它允许我们在多个SqlSession之间共享数据,从而提高应用性能。本文将深入探讨MyBatis二级缓存的工作原理、配置方式以及如何在实际开发中有效利用。 一、MyBatis二级...
在这个“Mybatis缓存测试示例”中,我们将深入探讨Mybatis的缓存机制,以及如何在实际项目中进行测试。 Mybatis 的缓存分为一级缓存和二级缓存。一级缓存是SqlSession级别的,同一SqlSession内的多次相同查询会复用...
标题中的“mybatis二级缓存”指的是MyBatis框架中的一个重要特性,它是MyBatis缓存机制的一部分,用于提升数据库查询效率。MyBatis一级缓存是SqlSession级别的,而二级缓存则是在整个Mapper配置范围内的全局缓存,...
3. 更新操作(INSERT、UPDATE、DELETE)会清除对应命名空间的二级缓存,确保数据一致性。 需要注意的是,二级缓存并非总是安全的,特别是对于实时性要求高的系统。因为缓存的数据可能存在延迟,可能导致数据不一致...