zoukankan      html  css  js  c++  java
  • 【MyBatis】一级缓存和二级缓存及其原理

    一、一级缓存(SqlSession)(本地会话)

    一级缓存默认开启的 在一次sqlSession中有效

    1.查询同一个用户

     2.查询用户A 更新其他用户B 再次查询用户A

     

     每次进行DML语句(增删改)都会刷新缓存。

    3.手动清除缓存

    二、二级缓存(全局缓存)

    在对象的mapper映射文件里面写 下面这个语句

     

     我们选用的是这个方法 用老师ID获得老师信息的方法

     测试方法代码如下

    public void testcacheTest()
        {
            //sqlSession1 的会话进行第一次查询。查询后一级缓存存入二级缓存后失效 
            SqlSession sqlSession1=MybatisUtils.getSqlSession();
            TeacherMapper teacherMapper=sqlSession1.getMapper(TeacherMapper.class);
            Teacher t1=teacherMapper.getTeacherById(1);
            System.out.println(t1);
            sqlSession1.close();
            
            //新建sqlSession2进行查询 如果在二级缓存命中则不需要连接JDBC进行查询
            System.out.println("================================");
            SqlSession sqlSession2=MybatisUtils.getSqlSession();
            TeacherMapper teacherMapper2=sqlSession2.getMapper(TeacherMapper.class);
            Teacher t2=teacherMapper2.getTeacherById(1);
            System.out.println(t2);
            sqlSession1.close();
            
            //查看t1 t2是否一直
            System.out.println("=======================================");
            System.out.println(t1==t2);
    
        }

    查看日志

     

  • 相关阅读:
    5个有趣且不必要的 JavaScipt 技巧
    动态规划的原理?
    如何避免出现failfast?
    动态规划的原理?
    jsp文件导包
    程序突击
    monthly report
    weekly review: 细节决定一切
    weekly review
    祸从口入祸从口出
  • 原文地址:https://www.cnblogs.com/cckong/p/14342105.html
Copyright © 2011-2022 走看看