Mybatis缓存机制概述

文章详细介绍了Mybatis的一级缓存和二级缓存机制。一级缓存可通过localCacheScope属性在全局配置文件中启用或禁用,也可通过session.clearCache()清除。二级缓存的启用、配置则需在XML映射文件中添加标签,并可通过全局设置中的cacheEnabled参数控制。
摘要由CSDN通过智能技术生成

        缓存机制分为一级缓存和二级缓存

一级缓存机制禁用,在方法内部可以通过session.commit()进行事务提交,也可以在全局配置文件中进行一级缓存禁用/启用,

<!--在Mybatis3.3以后使用localCacheScope属性可以禁用一级缓存
LocalCacheScope=”session” : 设置一级缓存数据保存在当前session中
LocalCacheScope=”statment” 设置当前session不保存任何数据,即禁用一级缓存-->
<setting name="localCacheScope" value="SESSION"/>

还有就是清除一级session缓存,session.clearCacher()方法

@Test
    public void cacheTest(){
        /*读取全局配置*/
        InputStream inputStream= Resources.getResourceAsStream("sqlMapConfig.xml");
        /*创建工厂类*/
        SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        /*获取可执行session*/
        SqlSession session=sessionFactory.openSession();
        /*By mapper inference come implements session mapping*/
        //通过mapper接口实现session映射
        EmpMapper empMapper=session.getMapper(EmpMapper.class);
        /* call select method*/
        EmployeeExt ext = empMapper.selectEmpAndArticlesByEmpId(1);
        EmployeeExt ext1 = empMapper.selectEmpAndArticlesByEmpId(1);
        System.out.println(ext);
        System.out.println(ext1);
        session.clearCache();
    }

        二级缓存类似于一级缓存,只是它与一级缓存用法不同

        首先在方法内部是无法禁用/启用二级缓存,可以通过要修改xml中,namespace范围内,添加二级缓存,<cache>标签内,属性值eviction,flushInterval,size,readyOnly。

<!--局部二级缓存-->
 <!--eviction环境值,flushInterval刷新间隔,sizeSession大小-->
    <cache eviction="LRU" flushInterval="60000" size="512" readOnly="true"/>

还可以通过全局配置进行操作:

<!-- 开启二级缓存,默认值也是true,但是要显式的配置出来-->
<!--如果是false,则是关闭二级缓存,一级缓存一直开启-->
<setting name="cacheEnabled" value="true"/>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值