mybatis缓存机制

mybatis 缓存 分为一级缓存和二级缓存

  1. 一级缓存为sqlSession,缓存内容只在sqlSession内有效
  2. 二级缓存为mapper级别的缓存

一级缓存

  • 在操作数据库时,会首先创建sqlSession会话对象,sql对象中会有一个私有的hashMap对象来储存数据,hashMap以(sql-查询语句,param-参数,nameSpace-命名空间)为key,以查询返回语句为value
 public void test1() throws Exception{
        SqlSession session = SqlSessionFac.getSqlSession();
        // 第一次查询
        User user = userMapper.selectUserById(1);
        System.out.println(user.toString());
        // 第二次查询
        User user2 = userMapper.selectUserById(1);
        System.out.println(user2.toString());
        session.close();
}

第一次执行select后,会将查询结果储存在sqlSession中,第二次 select ,如果查询参数相同,并且执行同一sql,则直接在缓存中读取数据。

注意 :

  1. 如果第一次查询之后,执行了(update ,delete,insert),那么mybatis会清空缓存的数据。
  2. mybatis默认开启一级缓存

二级缓存

  • 二级缓存是mapper级别的缓存,也就是同一个namespace的mappe.xml,当多个SqlSession使用同一个Mapper操作数据库的时候,得到的数据会缓存在同一个二级缓存区域
  • 二级缓存默认关闭,开启时,会优先将结果缓存到二级缓存中,查询时首先去一级缓存中查找,若没有则在二级缓存中查找,找到则返回查询结果
  • 同一级缓存一样:
  1. 用于储存的hashMap以(sql-查询语句,param-参数,nameSpace-命名空间)为key,以查询返回语句为value
  2. 如果第一次查询之后,执行了(update ,delete,insert),那么mybatis会清空缓存的数据。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值