您的位置:首页 > 其它

mybatis的二级缓存简介

2018-03-12 18:03 225 查看
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二级缓存的简单理解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: