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

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

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

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

  我从百度百科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. UML之状态图

    状态图,英文名曰-Statechart Diagram,她是系统的动态方面建模的五种图之一,一个状态图显示了一个状态机,在为对象的生命期建模中,她发挥着重要的作用,展示了单个对象内从状态到状态的控制流 ...

  2. 关于使用Xcode自带的单元测试UnitTest的介绍

    什么是单元测试? 单元测试就是为你的方法专门多写一个测试函数.以保证你的方法在不停的修改开发中.保持正确.如果出错,第一时间让你知道,这样从最小单位开始监控来保证软件的质量. 什么时候用到单元测试: ...

  3. bulk-load 装载HDFS数据到HBase

    bulk-load的作用是用mapreduce的方式将hdfs上的文件装载到hbase中,对于海量数据装载入hbase非常有用,参考http://hbase.apache.org/docs/r0.89 ...

  4. unix下的ACL

    acl可以针对user,组,目录默认属性(mask)来控制. acl需要文件系统支持,ext2/3,jfs,xfs等都支持. getfacl setfacl 对于mac os X系统的acl 可以使用 ...

  5. ubuntu12.04:Mysql数据库:手动安装

    首先到mysql的下载中心上下载最新的tar.gz包: 1.在浏览器中输入http://www.mysql.com/downloads/ 进入mysql的下载中心,在这里有使用mysql开发的一些工具 ...

  6. masm6.11的BUG?

    mov eax,[ebp + eax] ;->DS: mov eax,[eax + ebp] ;->SS: 上述2行代码生成的机器码反了,据说masm8也有此问题,但是masm9是正常的.

  7. LeetCode刷题之合并排序链表

    合并两个有序链表并返回一个新的列表.新列表应该由连接在一起的节点前两个列表 给定实例:Input: 1->2->4, 1->3->4Output: 1->1->2- ...

  8. webpack安装使用

    一.安装 1.安装node.js,Webpack 需要 Node.js v0.6 以上支持 2.使用npm(软件包管理 )安装webpack (1)全局安装    npm install webpac ...

  9. 百度编辑器上传视频音频的bug

    前言:UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码,百度Ueditor 支持多种后台语言上传 ...

  10. svn 不能添加.a文件

    1.打开终端输入    open ~/.subversion/ 2.双击打开config文件 3.修改如下两行 # global-ignores = *.o *.lo *.la *.al .libs ...