mybatis的二级缓存简介

mybatis默认情况下是默认开启一级缓存的,一级缓存就是同一个sqlSession查询相同的数据,是会进行缓存的。

一级缓存

默认情况下系统是开启一级缓存的,当我们获得同一个sqlSession对象,如果调用sqlSession的同一个方法查询同一行数据,那么第二次查询不会去数据库中查询,因为第一个已经进行了缓存,所以可以直接使用,除非缓存失效,或者数据数据要更新,否则都是在缓存中进行查询。

二级缓存

一级缓存是默认的,所以有很的局限性,对于一个sqlSession有效,但是对于其他的sqlSession就没有效了,这个时候如果,我们需要跨session就要开启二级缓存,。我们需要在Admin.xml中配置<cache/>

<mapper namespace="com.ddh.domain.Admin">
    <sql id="cols">
        a_id,a_name,a_password,a_username
  <cache/>

    </sql>
    <select id="login" resultType="int" parameterType="admin">
        select count(*) from admin where a_username = #{a_username} and a_password=#{a_password}
    </select>
    <select id="find" resultType="int" parameterType="admin">
        select a_id from admin where a_username = #{a_username} and a_password=#{a_password}

    </select>

mapper>

这样配置之后许多都是默认的,所有查询的数据都会被缓存下来,所有更新,删除的数据都会都将缓存更新,比如我们可以配置一下参数

<cache eviction="LRU" flushInterval="10000" size="1024" readOnly="true"/>

eviction表示缓存策略,这里有LRU 、还有先进先出(FIFO)、软引用(SOFT)、弱引用(WEAK)等,flushInterval则表示刷新时间,size表示缓存的对象个数,readOnly为true则表示缓存只可以读取不可以修改。

以上配置之后我们的JavaBean还需要序列化,即实现Serializable接口接口即可。

以上就是我对mybatis二级缓存的简单理解。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值