Mybatis-缓存cache

使用缓存的关键,在于存储内容访问的命中率。

系统缓存

Mybatis对缓存提供支持,系统缓存是Mybatis应用机器上的本地缓存。

一级缓存

在没有配置的默认情况下,Mybatis只开启一级缓存。

一级缓存只是相对于同一个SqlSessioni而言,在参数和SQL完全一样的情况下,使用同一个SqlSession对象调用同一个Mapper的方法,往往只执行一次SQL。因为使用SqlSession第一次查询后,Mybatis会将其放在缓存中,以后再查询的时候,如果没有声明需要刷新,并且缓存没超时的情况下,SqlSession都只会取出当前缓存的数据,而不会再次发送SQL到数据库。

二级缓存

二级缓存中,缓存在SqlSessionFactory层面上能够提供给各个SqlSession对象共享。二级缓存的配置要求:

1. xml中添加<cache/>配置;

这句配置代表着:

a.映射语句文件中的所有select语句将会被缓存;默认缓存1024个对象,也可通过cache的size属性,来配置缓存最多可以存储多少个对象。

b.映射语句文件中的所有insert、update和delete语句会刷新缓存;也可以通过cache的flushInterval属性,来配置每隔多少毫秒刷新缓存;

c.缓存会使用默认的Least Recently Used(LRU,最近最少使用的)算法来收回;可以通过cache的eviction属性来修改为:LRU、FIFO、SOFT、WEAK等策略

d.缓存是可读可写的,可以安全地被调用者修改,不干扰其他调用者。

2.返回的POJO中必须是可序列化的,便于将对象写入缓存。

自定义缓存

在大型服务器上,会使用不同的缓存服务器,比如Redis缓存。

我们需要实现Mybatis为我们提供的接口org.apache.ibatis.cache.Cache.

然后配置<cache type="com.lsq.MyCache"/>就可以使用自定义的缓存了。

通过cache的property子元素,我们可以定时MyCache的属性;

也可以在select、insert、update、delete等元素上定制SQL的缓存策略。例如:
<select ... flushCache="false" useCache="true">

<insert... flushCache="true">

<update... flushCache="true">

<delete... flushCache="true">

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值