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);
    
        }

    查看日志

     

  • 相关阅读:
    redis>lua脚本
    redis百万级数据存取
    spring之自定义注解
    spring>aop
    git的回退和撤销操作
    vue2.0 v-tap简洁(漏)版 (只解决300ms问题)
    JSONP原理小记
    前端模块加载规范AMD与CMD小记
    html状态码
    使用vue-cli开发时跨域问题
  • 原文地址:https://www.cnblogs.com/cckong/p/14342105.html
Copyright © 2011-2022 走看看