Mybatis——缓存机制

一级缓存

作用范围:SqlSession级别。
当我们使用一条sql语句之后,sql语句会作为key值,查询结果会作为value值,存储起来,在第二次执行到这个sql语句的时候,就会去查询key,然后把value取出来作为返回结果,这样就节省了一次数据库资源,而且提升了速度。
在这里插入图片描述
上面就可以看出,虽然进行了两次查询,但实际上只用了一次查询语句,这就是缓存机制的作用,节约资源。
当然,如果你在两次查询操作中进行了增删改的操作,缓存会自动被清空。mybatis会帮你执行sqlSession.clearCache();来清空缓存。

二级缓存

作用范围:SessionFactory级别
默认开启,可以在"mybatis-config.xml"的settings中关闭。true为开,false为关。
在这里插入图片描述
要使用还需要在XXXDao.xml文件中加入一个标签,表示可以使用二级缓存。
在这里插入图片描述
还需要把我们的pojo进行序列化。
在这里插入图片描述
当我们在任意SqlSession中使用查询语句,关闭一次SqlSession,就会提交一次缓存,当下一次在其他SqlSession使用查询的时候,将会根据namespace.sql作为key去查询对应的value值。

在同一namespace范围下,执行增删改操作,会清空该namespace的缓存。

二级缓存有一个问题,比如我们在做关联查询的时候,account关联user。第一次查询account,会查询出account和user的数据保存到缓存。这个时候我们单单对user进行了操作,数据已经变了,但是当我们再一次查询account的时候,由于第一次查询account的缓存还在,就会直接从缓存当中拿,user数据就是过时的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值