`

Mybatis3缓存设置

 
阅读更多

开启缓存

默认情况下,缓存没有开启。要开启缓存,在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”/> 
 

 

分享到:
评论

相关推荐

    基于mybatis自定义缓存配置Redis

    3. **配置MyBatis**:在MyBatis的配置文件(mybatis-config.xml)中,启用二级缓存并指定使用Redis作为缓存实现。添加如下配置: ```xml &lt;plugin interceptor="com.example.mybatis.redis....

    mybatis+redis缓存配置

    #### 一、MyBatis缓存机制概述 在MyBatis中,缓存是一项重要的性能优化措施。它能够显著减少数据库的访问次数,提高应用程序的响应速度。MyBatis提供了两种级别的缓存支持:一级缓存和二级缓存。 - **一级缓存**:...

    springMybatis+redis三级缓存框架

    3. **缓存雪崩**:多个缓存同时过期可能导致大量请求涌向数据库,设置合理的缓存过期时间以及采用随机过期策略可以避免这种情况。 4. **缓存击穿**:热点数据的缓存失效,导致数据库压力骤增。可以使用互斥锁(如...

    深入理解MyBatis中的一级缓存与二级缓存

    "深入理解MyBatis中的一级缓存与二级缓存" MyBatis是一种流行的持久层框架,它提供了缓存机制来提高应用程序的性能。在MyBatis中,有两种类型的缓存:一级缓存和二级缓存。下面我们将深入了解MyBatis中的一级缓存和...

    MyBatis-05 缓存机制

    3. 集成到MyBatis:在MyBatis的配置文件中,指定使用EhCache作为二级缓存的实现,并引用之前创建的ehcache.xml配置。 4. 开启Mapper缓存:在每个需要二级缓存的Mapper接口或XML文件中,启用对应的缓存配置。 通过...

    MyBatis3开启二级缓存

    **一、MyBatis缓存概念** MyBatis的缓存分为一级缓存和二级缓存。一级缓存是SqlSession级别的,同一个SqlSession内的相同SQL语句不会重复执行,而是直接从缓存中获取结果。然而,一级缓存存在生命周期问题,当...

    Mybatis缓存机制案例

    Mybatis缓存机制是数据库操作中的重要组成部分,它能够提高数据访问效率,减少对数据库的重复查询。在Mybatis中,缓存分为一级缓存和二级缓存,这两种缓存各有其特点和应用场景。 一级缓存是SqlSession级别的缓存,...

    MyBatis缓存(一级缓存、二级缓存)

    3. 当SqlSession提交事务时,一级缓存中的数据会被复制到二级缓存中。 4. 如果其他SqlSession执行相同的查询,会先查看二级缓存,找到则返回,否则查询数据库并更新二级缓存。 需要注意的是,二级缓存对数据一致性...

    mybatis读缓存源码demo

    在创建 SqlSessionFactory 时,可以设置缓存相关的配置。 3. **SqlSession**:执行 SQL 查询的主要接口,内部包含了对一级缓存的操作。在执行 CRUD 操作后,结果会被放入一级缓存。 4. **Mapper**:MyBatis 映射器...

    SpringMvc+Mybatis+缓存+easyui小demo

    Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。它将SQL语句与Java代码解耦,使开发者能更专注于SQL的编写,提高了数据库操作的效率和灵活性。 3. **EasyUI**:EasyUI是一个基于jQuery的UI组件库,...

    Mybatis系列教程Mybatis缓存共17页.pdf

    本教程“Mybatis系列教程Mybatis缓存共17页”旨在深入解析Mybatis的缓存功能。 在Mybatis中,缓存分为一级缓存和二级缓存。一级缓存是SqlSession级别的,同一个SqlSession内的多次相同查询会复用第一次查询的结果,...

    Mybatis的缓存1

    在Mybatis的配置文件中,可以通过`&lt;settings&gt;`标签的`localCacheScope`属性来设置一级缓存的行为,但通常无需手动配置,因为默认设置已经足够。 **一级缓存工作流程及源码分析** 一级缓存的工作流程如下: 1. 当...

    mybatis一级缓存和二级缓存简单示例

    2. **二级缓存**:在 MyBatis 的配置文件中,设置 `&lt;cache&gt;` 标签开启全局二级缓存: ```xml ``` 在对应的 Mapper 映射文件中,使用 `&lt;cache&gt;` 标签配置具体的缓存策略: ```xml ``` 其中,`...

    缓存处理-mybatis层

    开启MyBatis的缓存功能,需要在Mapper的XML配置文件中添加`&lt;cache&gt;`标签,并可以设置相应的属性,如 eviction(清除策略)、flushInterval(刷新间隔)、size(缓存大小)、readOnly(只读)等。例如: ```xml ```...

    mybatis缓存

    mybatis支持缓存,如果我们查找数据库中某一条记录时,先从缓存中获取,如果缓存中不存在该记录,则从数据库中获取,在放入到缓存中。该文档是关于mybatis使用一级或二级缓存的介绍

    mybatis二级缓存学习

    MyBatis二级缓存是MyBatis框架中的一个重要特性,它允许我们在多个SqlSession之间共享数据,从而提高应用性能。本文将深入探讨MyBatis二级缓存的工作原理、配置方式以及如何在实际开发中有效利用。 一、MyBatis二级...

    Mybatis缓存测试示例

    在这个“Mybatis缓存测试示例”中,我们将深入探讨Mybatis的缓存机制,以及如何在实际项目中进行测试。 Mybatis 的缓存分为一级缓存和二级缓存。一级缓存是SqlSession级别的,同一SqlSession内的多次相同查询会复用...

    mybatis二级缓存

    标题中的“mybatis二级缓存”指的是MyBatis框架中的一个重要特性,它是MyBatis缓存机制的一部分,用于提升数据库查询效率。MyBatis一级缓存是SqlSession级别的,而二级缓存则是在整个Mapper配置范围内的全局缓存,...

    mybatis一二级缓存

    3. 更新操作(INSERT、UPDATE、DELETE)会清除对应命名空间的二级缓存,确保数据一致性。 需要注意的是,二级缓存并非总是安全的,特别是对于实时性要求高的系统。因为缓存的数据可能存在延迟,可能导致数据不一致...

Global site tag (gtag.js) - Google Analytics