查询缓存

一、概念

        查询缓存指的是在内存或者外存上建立一个存储空间,用来保存上次的查询结果,夏促再进行同样的查询是,就直接从内存或者外存中读取,大大提升查询效率

二、一级缓存

        范围:一个sqlsession对象,当一个sqlsession对象关闭后,对应的一级缓存会被清空。

        清理条件:执行了增、删、改的commit()方法

                          

三、二级缓存(被多个sqlsession对象共享)

        范围:相同namespaced生成的mapper对象下所有的sqlsession对象

         清理条件:执行了该Mapper对象的增、删、改方法

        原理:sqlsession1------->studentMapper中的查询方法(从数据库中获取)------------>写入二级缓存

                   sqlsession2-------->studentMapper中的查询方法(从二级缓存中获取)

                   sqlsession3-------->studentMapper提交的commit()方法(增、删、改)---------->清理二级缓存

      备注:两个对象执行的方法和代码均相同,不同之处是sqlseesion1中的数据是从数据库中取,sqlsession2中的数据从二级缓存中取

       1. 二级缓存的使用:

                 (1)开启二级缓存

                      1>.Mybatis配置文件       

<setting name="cacheEnable" value=""></setting>

 

                     2>.mapper.xml文件

                        在mapper内部加上<cache />

                 (2)对象实现序列化

        2.禁用二级缓存

               

<select id="queryById" parameter="int" resultType="User" useCache="false">
    select  * from  user where userid=#{userid}
</select>

 

 

四、commit()清理缓存的原因

        对数据库进行增删改查操作,如果不及时清理缓存,就会丢失数据的实时性,造成脏读

         如果有特殊情况,想要在执行commit()方法时并不进行清理缓存,可以在增删改查的标签里设置 flushCache="false"

 

 

转载于:https://www.cnblogs.com/pamne/p/11275918.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值