MyBatis中的缓存介绍与示例

目录

什么是缓存?

一级缓存

实例效果

二次缓存

示例效果


什么是缓存?

在用户访问相同数据时,需要对数据库多次访问,导致产生大量IO、读写硬盘的操作,效率低下,有了缓存首次访问时,查询到数据库数据库,将数据库存储到缓存中,再次访问时,直接访问缓存减少IO的与赢哦读写,提高效率

一级缓存

是指同一个sqlsession发起的多次同构查询,会将数据保存在一级缓存中

实例效果

@Test
public void OneText(){
    SqlSession session = MyBatisUtils.getSession();
    UserDao userDao = session.getMapper(UserDao.class);
    User user = userDao.selectById(1);
    System.out.println(user);
    System.out.println("-------一级缓存-------");
​
    SqlSession session1 = MyBatisUtils.getSession();
    UserDao mapper = session.getMapper(UserDao.class);
    User user1 = mapper.selectById(1);
    System.out.println(user1);
}

二次缓存

是指只要sqlSessionFactory是同一个即可取出缓存

注意事项:对事务进行提交或关闭才能有二级缓存

@Test
public void TwoText(){
    SqlSession session = MyBatisUtils.getSession();
    UserDao userDao = session.getMapper(UserDao.class);
    User user = userDao.selectById(1);
    session.close();sqlSession2.close(); //缓存未击中,重新查询数据库、重新缓存
​
    SqlSession session3 = MyBatisUtils.getSession();
    UserDao mapper2 = session3.getMapper(UserDao.class);
    User user3=new User();
    user3.setId(2);
    user3.setSex("333");
    user3.setPassword("000");
    user3.setName("@@@");
    mapper2.updateUser(user3);
    session3.commit();
    session3.close();
​
    System.out.println("------二级缓存开始-------");
​
    SqlSession session1 = MyBatisUtils.getSession();
    UserDao mapper = session1.getMapper(UserDao.class);
    User user1 = mapper.selectById(1);
    session1.close();//关闭才能产生缓存
​
    System.out.println("------二级缓存继续------");
​
    SqlSession session2 = MyBatisUtils.getSession();
    UserDao mapper1 = session2.getMapper(UserDao.class);
    User user2 = mapper1.selectById(1);
    session2.close();
​
    System.out.println("------我们继续二级缓存------");
    SqlSession session4 = MyBatisUtils.getSession();
    UserDao mapper3 = session4.getMapper(UserDao.class);
    User user4 = mapper3.selectById(1);
    session4.close();
    System.out.println(user4);
}
示例效果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值