在mybaits中缓存使用与新架构Vue、Angluar在IE中的缓存禁用

mybatis的缓存分为一级缓存和二级缓存

一级缓存针对的是sqlSession,默认是开启状态。

问题一:什么情况下,执行同样的sql查询语句只会执行一次。

   同一个sqlSession,执行查询的sql语句时,第一会执行查出数据,从二次查询开始,你会发现查询出的语句都是在缓存中取出。但是在你执行了一次更新、或者删除、插入语句提交后,缓存会清除。这时候你在执行这个查询会重新读取 一遍数据,重新存入本地缓存。

问题二:什么情况下,执行同样的sql查询语句会重复次执行呢。

  不同的sqlSession,执行同样的Sql查询语句,这时候每一次的查询都会执行。

二级缓存针对的是Mapper,而mapper级别是贯穿了全部的的sqlSession。如下图

      二级缓存是默认关闭的,不同的sqlsession同时调用了开启了二级缓存配置的mapper,这时候查询的sql语句的操作都只会执行一次,接下来介绍一下开启的方式:

1.配置的方式:

注:settings 元素在 configuration 标签元素中书写顺序排在第二位

configuration.xml文件中配置开启:

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

在要开启缓存的Mapper.xml中配置:

<cache readOnly="true"/>

这样调用这个mapper的查询语句的时候缓存就开启啦。

2.自动控制二级缓存的开启:

    @Autowired
    private SqlSession sqlSession;

    @PostConstruct
    private void init() {
        sqlSession.getConfiguration().setCacheEnabled(false);
    }

    @RequestMapping(value = "/setCacheState")
    @ResponseStatus(HttpStatus.OK)
    public void setCacheState(boolean ic) {
        sqlSession.getConfiguration().setCacheEnabled(ic);
    }

    @RequestMapping(value = "/getCacheState")
    public Object getCacheState() {
        return Collections.singletonMap("cacheState", sqlSession.getConfiguration().isCacheEnabled());
    }


以上是mybatis的缓存介绍,接下来介绍一下新架构中如何清除IE下的缓存:

 1.在请求后面加上随机数,这边用的是时间。

    axios.get('/messageManage/setIsReadMsg?t=' + Date.now(),{params}).then(res=>res.data);

 2.在路由配置:

 app.config(['$httpProvider', function($httpProvider) {
  if (!$httpProvider.defaults.headers.get) {
   $httpProvider.defaults.headers.get = {};
  }

  $httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';
  $httpProvider.defaults.headers.get['Pragma'] = 'no-cache';
 }]);


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值