Mybatis的一二级缓存

1.对于一二级缓存的认识:

在进行两次相同且连续的查询时,日志有时会只有一次的查询记录,这就是一级查询的效果,一二级查询的使用可以加快运行时间。

2.一级缓存:

 ①一级缓存是SqlSessuon级别的,通过同一个SqlSession查询的数据会被缓存,下次查询相同的数据,就会从缓存中直接获取,不会从数据库重新访问,一级缓存是一直默认开启的,不需要手动开启啥的,并且也没有手动关闭的说法。

使一级缓存失效的四种情况:

1) 不同的SqlSession对应不同的一级缓存

2) 同一个SqlSession但是查询条件不同

3) 同一个SqlSession两次查询期间执行了任何一次增删改操作

4) 同一个SqlSession两次查询期间手动清空了缓存。

即:sqlSession.clearCache();

 

3.二级缓存:

①二级缓存是 SqlSessionFactory 级别,通过同一个 SqlSessionFactory 创建的 SqlSession 查询的结果会被缓存;此后若再次执行相同的查询语句,结果就会从缓存中获取。

二级缓存开启的条件:

1)在核心配置文件中,设置全局配置属性cacheEnabled="true",默认为true,不需要设置

 

2)在映射文件mapper中设置标签<cache />

3)二级缓存必须在SqlSession关闭或提交之后有效,即在

/**二级缓存只在SqlSession提交或失效时才能使用*/
        sqlSession.commit();
        sqlSession.close();
4) 查询的数据所转换的实体类类型必须实现序列化的接口
implements Serializable

③使二级缓存失效的情况:

两次查询之间执行了任意的增删改,会使一级和二级缓存同时失效。

4.Mybatis缓存查询记录

1.先查询二级缓存,因为二级缓存中可能会有其他程序已经查出来的数据,可以拿来直接使用。

2.如果二级缓存没有命中,再查询一级缓存

3.如果一级缓存也没有命中,则查询数据库

4.SqlSession关闭之后,一级缓存中的数据会写入二级缓存

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值