06 mybatis一二级缓存

本文将阐述mybatis中的延迟加载。

1、环境约束

  • win10 64位操作系统
  • idea2018.1.5
  • jdk-8u162-windows-x64
  • mybatis3.2.8
  • mysql 6.5

2、前提约束

  • 完成mybatis一对一查询 https://www.jianshu.com/p/71ccf2f13f45 并且加入log4j.properties

3、操作步骤

3.1 一级缓存是默认的,所以直接进行一级缓存测试

//关键代码
String resource = "mybatis-config.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//下面这句语句执行的时候,在命令行中打印了sql语句,证明连接了数据库,执行了sql
List loginList = userMapper.selectLogin();
//下面这句语句执行的时候,在命令行中不会打印sql语句,证明没执行sql,用的是之前的缓存
List loginList1 = userMapper.selectLogin();

注意,update操作会使得缓存失效,下次查询还会先查询数据库。

3.2 配置和测试二级缓存

  • 在pom.xml中加入依赖
    
      org.mybatis.caches
      mybatis-ehcache
      1.0.3
    
    
      org.slf4j
      slf4j-log4j12
      1.6.4
    

  • 修改mybatis-config.xml
    
        
    
  • 在UserMapper.xml中增加以下内容

  • 在resources文件夹中加入ehcache.xml

    
    

  • 测试
//关键代码
String resource = "mybatis-config.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
//获取session1  
SqlSession session1 = sqlSessionFactory.openSession();  
UserMapper userMapper = session1.getMapper(UserMapper.class);  
User user1 = userMapper.findUserById(1);  
session1.close();  
//获取session2  
SqlSession session2 = sqlSessionFactory.openSession();  
UserMapper userMapper2 = session2.getMapper(UserMapper.class);  
//使用session2执行第二次查询,由于开启了二级缓存这里从缓存中获取数据不再向数据库发出sql  
User user2 = userMapper2.findUserById(1);  
//关闭session2  
session2.close();

注意,update操作会使得二级缓存失效,下次查询还会先查询数据库。
以上就是mybatis中一二级缓存的测试过程。

你可能感兴趣的:(06 mybatis一二级缓存)