mybatis 缓存入门

1、一级缓存

默认启动本地缓存,对一个对话中的数据进行缓存,作用域在sqlsession

运行过程:运行sql,将结果存储到高速缓存中,下次运行同样sql直接从高速缓存中读取。

         需要注意的是:如果运行了新增、修改、删除,缓存被清除

2、二级缓存

默认不启动二级缓存,二级缓存是mapper级别,是SqlSessionFactory对象的缓存。

一个映射xml中的sql执行后放入缓存区域,下一次执行时,从缓存中取结果。

3、实现方式

一级缓存不需要配置,默认开启;

二级缓存实现:

1、在主配置文件中配置;

<setting name="cacheEnabled" value="true"/>

2、在xml中配置;

<cache/>

3、在sql语句中使用

   <select id="findById" resultType="com.example.domain.User" parameterType="INT" useCache="true">
        SELECT * FROM  USER  WHERE ID = #{ID}
   </select>

在springboot中实现:

1、在properties中配置:

# 开启mybatis的二级缓存 mybatis.configuration.cache-enabled=true

2、在xml中开启

<!-- 开启二级缓存 --> <cache eviction="LRU" flushInterval="100000" readOnly="true" size="1024"> </cache>

说明:
eviction: 回收策略
LRU 最近最少使用的,移除最长时间不被使用的对象,这是默认值
FIFO 先进先出,按对象进入缓存的顺序来移除它们
SOFT 软引用,移除基于垃圾回收器状态和软引用规则的对象
WEAK 弱引用,更积极的移除基于垃圾收集器状态和弱引用规则的对象

flushInterval: 刷新间隔,以毫秒为单位,100000表示每100秒刷新一次缓存。不设置的话,则每次调用语句时刷新。

readOnly: 只读属性可以被设置为true后者false。只读的缓存会给所有调用者返回缓存对象的相同实例,因此这些对象不能被修改,这提供了很重要的性能优势。可读写的缓存会通过序列化返回缓存对象的拷贝,这种方式会慢一些,但很安全,因此默认为false。

size: 可以被设置为任意的正整数,要记住缓存的对象数目和运行环境的可用内存资源数目,默认1024。

4、注意

mapper接口要实现Serializable接口。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值