------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

缓存------------------------------------------》

  很熟悉的一个词,什么是缓存?

  好多人都不太能解释清楚缓存的概念,运用到缓存的地方大家都很清楚,像什么网站了,视频缓存啊,等等

  我从百度百科copy一个缓存的概念,读一下,免得看完这篇博客都对缓存的概念一无所知

  缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。

-------------------------------》

  有了一定概念了把,MyBatis中有些实现不同,不过意思相似,不然也不会叫做缓存

MyBatis中一级缓存(他是默认开启的)

    在同一个SqlSession中,执行相同的查询SQL,第一次会去查询数据库,并写到缓存中;第二次直接从缓存中取。

    MyBatis缓存里面实则是个hashmap,key值为hashcode+selectId+sql语句,value为查询返回结果的内存地址的引用(指针),

-------------------------------》

  哦,笔者你讲了这么多,不是废话吗?默认开启,不需要手动配置,手动使用,我看了有什么用?

  是为了更好的理解编程的灵魂,深入它的全部,才会有所成

-------------------------------》

一级缓存存在性的证明

  说了这么多,笔者你怎么知道有一级缓存存在呢?如果别人问我,我怎么更快的跟他解释清楚呢?

  单测方法

    /*一级缓存存在性证明sql*/
@Test
public void t2LevelOneCacheHasExist(){
SqlSession session= MyBatisUtils.getSession(); IDeptDAO mapper = session.getMapper(IDeptDAO.class);
Dept d1 = mapper.findDeptnoALLEmpsMoreSql(); System.out.println(d1.getDeptName());
System.out.println("==================我是特别的高贵的分割线==================");
Dept d2 = mapper.findDeptnoALLEmpsMoreSql();
System.out.println(d2.getDeptName()); session.close(); }

  运行结果

    

  看到分割线下面了吗?没有对数据库做sql语句的查询操作,直接得的结果,难道还不能说明它中间有一道,从缓存中拿的结果吗?(上面俩条sql是因为做的关联查询的直接加载)

--------------------------------------》

增删改对一级缓存的影响:

  口说无凭,我直接放代码

  单测方法

  

    /*增删改对一级缓存的影响*/
@Test
public void t3IUDForLevelOneCache(){
SqlSession session= MyBatisUtils.getSession(); IDeptDAO mapper = session.getMapper(IDeptDAO.class);
Dept d1 = mapper.findDeptnoALLEmpsMoreSql(); System.out.println(d1.getDeptName()); Dept dept=new Dept();
dept.setDeptName("无敌是多么寂寞部");
mapper.addDept(dept);
System.out.println("==================我是特别的高贵的分割线==================");
Dept d2 = mapper.findDeptnoALLEmpsMoreSql();
System.out.println(d2.getDeptName()); session.close(); }

  下面我放运行结果

    

  在分割线后又做了查询,说明了增删改会对缓存进行清空操作,清空操作

本次博客说明了mabatis中一级缓存的存在性证明 (存在的),增删改对一级缓存的影响(会清空一级缓存)-----》

透露一下,下次博客:《mybatis二级缓存》

SSM-MyBatis-17:Mybatis中一级缓存(主要是一级缓存存在性的证明,增删改对一级缓存会造成什么影响)的更多相关文章

  1. 我来讲讲在c#中怎么进行xml文件操作吧,主要是讲解增删改查!

    我把我写的四种方法代码贴上来吧,照着写没啥问题. 注: <bookstore> <book> <Id>1</Id> <tate>2010-1 ...

  2. MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存

    目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...

  3. 【SSM 7】Mybatis底层封装思路

    一.基本概述 在前面的博客中介绍到Mybatis的逆向生成工具,为我们生成了每个实体的基本增删改查的代码,那么每个实体都是那么多的代码,我们很容易的发现,有很大的相似性.对于这部分代码,应该予以抽象封 ...

  4. Spring Boot入门系列(六)如何整合Mybatis实现增删改查

    前面介绍了Spring Boot 中的整合Thymeleaf前端html框架,同时也介绍了Thymeleaf 的用法.不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/z ...

  5. SpringMVC之简单的增删改查示例(SSM整合)

    本篇文章主要介绍了SpringMVC之简单的增删改查示例(SSM整合),这个例子是基于SpringMVC+Spring+Mybatis实现的.有兴趣的可以了解一下. 虽然已经在做关于SpringMVC ...

  6. SSM整合_年轻人的第一个增删改查_基础环境搭建

    写在前面 SSM整合_年轻人的第一个增删改查_基础环境搭建 SSM整合_年轻人的第一个增删改查_查找 SSM整合_年轻人的第一个增删改查_新增 SSM整合_年轻人的第一个增删改查_修改 SSM整合_年 ...

  7. IOS9中联系人对象的使用及增删改查操作的函数封装

    之前克服重重困难把IOS9中新的类联系人搞明白了,现在把增删改查封装成了函数,如下: // // ViewController.m // IOS9中联系人CNContact的使用 // // Crea ...

  8. SQLite中的增删改查

    虽然android提供了sql查询的封装方法,但是理解起来还是麻烦,所以我这里用sql语句来完成工作. 首先是建立一个类,继承SQLiteOpenHelper 这里面会建立一个数据库,并且初始化一个表 ...

  9. 在ASP.NET MVC中对表进行通用的增删改

    http://www.cnblogs.com/nuaalfm/archive/2009/11/11/1600811.html 预备知识: 1.了解反射技术 2.了解C#3.0中扩展方法,分布类,Lin ...

随机推荐

  1. ”()“和”[]“引发的血案——由此引出C++中关键词new

    先来看一个程序吧: #include <iostream> #include <cassert> using namespace std; int main() { ; int ...

  2. “《编程珠玑》(第2版)第2章”:C题(查找变位词,排序)

    C题是这样子的: 给定一个英语字典,找出其中的所有变位词集合.例如,“pots”.“stop”和“tops”互为变位词,因为每一个单词都可以通过改变其他单词中字母的顺序来得到. 下段分析摘自该书(P1 ...

  3. C++中重载、覆盖与隐藏的区别(转)

    本文摘自林锐博士的<高质量C++/C编程指南>. 成员函数的重载.覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防. 1.重载与覆盖 成员函数被重 ...

  4. “万能数据库查询分析器” 5.03发布,访问EXCEL将自动为表名前后加上中括弧

        "万能数据库查询分析器" 5.03发布,访问EXCEL将自动为表名前后加上中括弧 1          引言    中国本土程序员马根峰推出的个人作品----万能数据库查询 ...

  5. 新型USB病毒BadUSB 即使U盘被格式化也无法根除

    这种病毒并不存在于USB设备中的存储文件中,而是根植于USB设备的固件里.这意味着,即使用户对U盘进行全面的格式化清理,仍不能"杀死"它.

  6. CXF 5参考资料

    下载 描述 名字 大小 下载方法 本教程示例应用程序的源代码 CXF_Spring_Survey_Src.war 10 KB HTTP 关于下载方法的信息 学习 Apache CXF 的官方站点:提供 ...

  7. 三种Tomcat集群方式的优缺点分析

    三种Tomcat集群方式的优缺点分析 2009-09-01 10:00 kit_lo kit_lo的博客 字号:T | T 本文对三种Tomcat集群方式的优缺点进行了分析.三种集群方式分别是:使用D ...

  8. SpringBoot入门之简单配置

    今天下载了<JavaEE开发的颠覆者SpringBoot实战>这本书,发现Spring还有好多遗漏的部分,算是又恶补了一下,今天主要是学习下SpringBoot的配置. 一.基本配置 1. ...

  9. HDU-5706

    GirlCat Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem Desc ...

  10. Hive入门学习--HIve简介

    现在想要应聘大数据分析或者数据挖掘岗位,很多都需要会使用Hive,Mapreduce,Hadoop等这些大数据分析技术.为了充实自己就先从简单的Hive开始吧.接下来的几篇文章是记录我如何入门学习Hi ...