zoukankan      html  css  js  c++  java
  • mybatis_13一级缓存

    1. Mybatis的缓存理解

      Mybatis的缓存,包括一级缓存和二级缓存,一级缓存是默认使用的。二级缓存需要手动开启。

      一级缓存指的就是sqlsession,在sqlsession中有一个数据区域,是map结构,这个区域就是一级缓存区域。一级缓存中的key是由sql语句、条件、statement等信息组成一个唯一值。一级缓存中的value,就是查询出的结果对象。

      二级缓存指的就是同一个namespace下的mapper,二级缓存中,也有一个map结构,这个区域就是一级缓存区域。一级缓存中的key是由sql语句、条件、statement等信息组成一个唯一值。一级缓存中的value,就是查询出的结果对象。

    一个唯一值。一级缓存中的value,就是查询出的结果对象。

     

      

    2 一级缓存

    原理:

     

    第一次查询之后, 由sql语句、条件、statement等信息组成一个唯一值作为key存到sqlsession中的map,查询结果作为value:

             如果没有进行其他增删改操作的话,再次查询(同第一次查询条件一样)会自动从sqlsession中读取

             如果进行了其他增删改操作,再次查询会重新执行SQL语句查询

    3.两次相同查询之间不进行其他数据库操作

     @Test
        public void test() throws IOException {
            InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
            SqlSessionFactory ssf=new SqlSessionFactoryBuilder().build(is);
            SqlSession sqlSession=ssf.openSession();
            UserMapper mapper=sqlSession.getMapper(UserMapper.class);
    
            User user=mapper.findUserById(1);
            System.out.println("user"+user);
    //没有进行其他数据库操作,直接再次查询
            User user2=mapper.findUserById(1);
            System.out.println("user"+user2);
    
            sqlSession.commit();
            sqlSession.close();
        }
    
    }


     测试结果:

    4.两次相同查询之间插入一条记录

    @Test
    
      public void test() throws IOException {
    
        InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
    
        SqlSessionFactory ssf=new SqlSessionFactoryBuilder().build(is);
    
        SqlSession sqlSession=ssf.openSession();
    
        UserMapper mapper=sqlSession.getMapper(UserMapper.class);
    
      
    
        User user=mapper.findUserById(1);
    
        System.out.println("user"+user);
    
      
    
        //插入一条数据
    
        User user3=new User();
    
        user3.setUsername("刘海柱");
    
        user.setSex("2");
    
        user.setAddress("单挑王");
    
        mapper.save(user3);
    
      
    
        User user2=mapper.findUserById(10);
    
        System.out.println("user"+user2);
    
      
    
        sqlSession.commit();
    
        sqlSession.close();
    
    }

     测试结果:


      

  • 相关阅读:
    接口测试基础一--HTTP请求
    python笔记8-python的异常处理
    web自动化测试中的八大定位方法,推荐使用xpath
    charles抓取https包
    Python 中WebElement 类中的部分操作
    selenium 启动浏览器后基本操作:后退、前进、刷新、关闭窗口、关闭会话
    fiddler抓包可以抓到电脑数据抓不到手机上的数据------防火墙问题
    Charles的安装与破解
    python+ selenium + webdriver的环境准备
    python——print函数
  • 原文地址:https://www.cnblogs.com/aihuadung/p/10482239.html
Copyright © 2011-2022 走看看