MyBatis 缓存

1. 为什么使用缓存?

为了减轻数据库的压力,提高查询性能。

缓存实现的原理:从数据库中查询出来的对象在使用完后不要销毁,而是存储在内存(缓存)中, 当再次需要获取该对象时,直接从内存(缓存)中直接获取,不再向数据库执行 select 语句,从而减少了对数据库的查询次数,因此提高了数据库的性能。

2. Mybatis缓存

一级缓存

它是默认存在的,是Sqlsession 级别的,在同一个sqlsession中,执行两次相同的sql语句,会将第一次查询的数据缓存到sqlsession对象中,第二次查询时,可以不用访问数据库,直接从一级缓存中获取即可。

一级缓存失效:

(1)sqlsession 关闭

sqlSession.close();

(2) 主动清除一级缓存数据。

sqlSession.clearCache();

(3)在期间执行增,删,改提交事务会清除一级缓存中的数据,但该对象可以继续使用

二级缓存

二级缓存是SqlSessionFactory级别(只有一个),以namespace名称为单位缓存数据,多个sqlsession可以共享

如果开启二级缓存,在第一次查询到的数据后,关闭sqlsession时,会将数据存入到二级缓存中,之后另一个sqlsession查询时,可以从二级缓存中获取数据。

 缓存配置

(1)开启全局的二级缓存

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

(2)对象序列化。将所有的 POJO 类实现序列化接口 Java.io. Serializable

public class Student implements Serializable {}

(3)配置映射文件。在 Mapper 映射文件中添加,表示此 mapper 开启二级缓存。 当 SqlSeesion 关闭时,会将数据存入到二级缓存 

  <cache  eviction="FIFO"
             flushInterval="60000"
             size="512"
             readOnly="true"></cache>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值