缓存就是内存中的数据,常常来自对数据库查询结果的保存,使用缓存, 我们可以避免频繁的与数据库进行交互, 进而提高响应速度。

  一级缓存初体验(session,默认打开)

  同一查询执行两次以上:select * from student where id=10

  两次中间未清缓存:

  

  第一次查询进入数据库查询:

 

  第二次无数据库预处理信息,直接访问一级缓存获取数据

二级缓存初体验(mapper默认关闭)

  同一查询执行两次以上:select * from student where id=10,每次使用不同sqlsession

  1、Student实体类系列化

  

  2、Mapper开启二级缓存

    1)配置方式:mapper.xml中添加:<cache></cache>

    2)注解方式:Mapper.java中添加:

  

  3、测试:

 

总体感觉,一级缓存是y轴,二级缓存是x轴。

  一二级缓存可同时有效,测试验证如下:

  测试方法:

 

  日志体现如下:

  上例测试同样验证sqlSession.close()对一级缓存有影响,但是对二级缓存无影响。那么什么操作对二级缓存有影响呢?增、删、改 

  下面仅验证update对二级缓存的影响,其对一级缓存有同样的影响自行验证。

  新增update的操作:

 

  测试:

  

  测试结果:

  其上验证是基于对Mybatis缓存底层数据结构以有所了解,下篇缓存底层数据结构及实现——Mybatis提供可扩展功能点之一缓存MyBatis辅助功能点一: cache - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)

五、MyBatis缓存初体验的更多相关文章

  1. Spring boot缓存初体验

    spring boot缓存初体验 1.项目搭建 使用MySQL作为数据库,spring boot集成mybatis来操作数据库,所以在使用springboot的cache组件时,需要先搭建一个简单的s ...

  2. Memcached分布式缓存初体验

    1 Memcached简介/下载/安装 Memcached是一个高性能的不是内存对象缓存系统,用于动态Web应用以减轻数据库负载.Memcached基于一个存储键/值对的HashMap.其客户端可以使 ...

  3. IDEA+Maven配置MyBatis的初体验(坑点总结)

    起因 在老师的推荐下,我跟着这篇文章https://www.jb51.net/article/70923.htm尝试MyBatis的初次调试运行.途中困难重重,由于教程中的开发环境是eclipse,项 ...

  4. ASP.NET MVC学习---(五)MVC初体验

    经过之前n多的铺垫 我们已经大概了解了这个姓m名vc的家伙了 那么今天我们就来体验一把 怎么体验呢? 就来做一个小例子吧~ mvc增删改查的例子 数据库还是之前我们的老朋友 关系图: 表中的数据已填好 ...

  5. docker从零开始(五)堆栈初体验,stacks

    先决条件 安装Docker 1.13或更高版本. 获取Docker Compose,请参考第三节 按照第四节中的描述获取Docker Machine. 在第二节中了解如何创建容器. 确保您的图像作为已 ...

  6. VSTO学习笔记(十五)Office 2013 初体验

    原文:VSTO学习笔记(十五)Office 2013 初体验 Office 2013 近期发布了首个面向消费者的预览版本,我也于第一时间进行了更新试用.从此开始VSTO系列全面转向Office 201 ...

  7. Ignite缓存管理初体验

    Ignite缓存管理初体验:ignite服务端配置,大家可以用参考官方进行配置(或者使用默认配置也可以). 本文中的ignite使用版本是1.7,与spring结合使用.maven依赖配置 ignit ...

  8. SpringCloud初体验:五、Sidecar 将 PHP 这类非 Java 生态语言的服务接入 Spring Cloud

    先起一个 Sidecar 服务,一个PHP服务一个应用,和PHP服务部署在同一台机子,通过 localhost 访问,这样就解决了网络开销,相当于本地进程间调用 Sidecar 服务比较简单, 1.这 ...

  9. Spring之初体验

                                     Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...

随机推荐

  1. 老旧业务重构案例——IM系统如何设计

    一年半之前刚来到这个团队,便遭遇了一次挑战: 当时有个CRM系统,老是出问题,之前大的优化进行了4次小的优化进行了10多次,要么BUG重复出现,要么性能十分拉胯,总之体验是否糟糕!技术团队因此受到了诸 ...

  2. SYCOJ2205超级百钱百鸡

    题目-超级百钱百鸡 (shiyancang.cn) 百钱百鸡的加强版 百钱百鸡的话,因为是有范围,所以挨个挨个尝试即可,确定两个,即可确定第三个. 超级百钱百鸡,通过题目的描述,最后可以得到一个二元的 ...

  3. 万级K8s集群背后 etcd 稳定性及性能优化实践

    1背景与挑战随着腾讯自研上云及公有云用户的迅速增长,一方面,腾讯云容器服务TKE服务数量和核数大幅增长, 另一方面我们提供的容器服务类型(TKE托管及独立集群.EKS弹性集群.edge边缘计算集群.m ...

  4. java 8 - java 17 升级指北

    2014年发布的java SE 8和2017年发布的java EE 8,至今还是使用最广泛的java版本,大部分java开发者对于java 8之后的升级总是敬而远之,这跟java 9以后的破坏性升级和 ...

  5. golang中接口类型小案例

    1.  在项目中实现注册成功之后,向用户发送邮件.微信提醒 package main import "fmt" type IMessage interface { send() b ...

  6. yum源 epel源 no package available 更换国内yum源

    有时候安装软件会出现 no package available 解决办法:yum install epel-release 安装完会在/etc/yum.repos.d/目录下下生成两个repo文件: ...

  7. 了解promise、promise对象

    Promise 是异步编程的一种解决方案,比传统的解决方案--回调函数和事件--更合理和更强大.它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象. 所谓Pr ...

  8. Flutter 多引擎支持 PlatformView 以及线程合并解决方案

    作者:字节移动技术-李皓骅 摘要 本文介绍了 Flutter 多引擎下,使用 PlatformView 场景时不能绕开的一个线程合并问题,以及它最终的解决方案.最终 Pull Request 已经 m ...

  9. linux网卡知识

    使用 Vim 文本编辑器来配置网卡设备的绑定参数.网卡绑定的理论知识类似于前面学习的 RAID 硬盘组,我们需要对参与绑定的网卡设备逐个进行"初始设置".需要注意的是,这些原本独立 ...

  10. Java 中对象锁和类锁的区别? 关键字 Synchronized的用法?

    一  对象锁和类锁的关系 /* * 对象锁和[类锁] 全局锁的关系? 对象锁是用于对象实例方法,或者一个对象实例上的 this 类锁是用于类的静态方法或者一个类的class对象上的. Ag.class ...