MyBatis 查询结果的缓存

MyBatis的缓存包括一级和二级缓存。一级缓存默认开启,存在于SqlSession内部,当SqlSession关闭时,一级缓存失效。二级缓存默认关闭,需手动开启并配置实现方式,其为mapper级别,多个SqlSession可共享查询结果。提交修改会根据情况清空一级或二级缓存。
摘要由CSDN通过智能技术生成

MyBatis的缓存指的是缓存查询结果,当以后使用相同的sql语句、传入相同的参数进行查询时,可直接从mybatis本地缓存中获取查询结果,而不必查询数据库。

mybatis的缓存包括一级缓存、二级缓存,一级缓存默认是开启的,二级缓存默认是关闭的。

 

一级缓存:

SqlSession级别,在SqlSession中有一个Map,key是由sql语句、参数等信息组成的唯一值,value是查询出来的结果对象。

 

二级缓存:

mapper级别,同一个namespace下的mapper,有一个Map。

 

 

 

二级缓存可以使这些sqlSession做到查询结果共享。

 

 


 

 

一级缓存

一级缓存默认是开启的。

 

        User user1 = mapper.queryUserById(1);
        User user2 = mapper.queryUserById(1);

第一次查询时,就将查询结果放到一级缓存中。

如果后续使用的sql语句相同、传入的实参也相同,则结果对象也会相同,直接从一级缓存中获取结果对象,不再查询数据库。

 

 

        User user1 = mapper.queryUserById(1);
        sqlSession.commit();
        User user2 = mapper.queryUserById(1);

如果此sqlSession调用了commit()方法,会自动清空此sqlSession的一级缓存。

因为使用commit(),会将修改提交到数据库,下一次相同的查询,查询结果可能变了,之前的一级缓存不能再用,所以会自动清空。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值