博主将会针对Java面试题写一组文章,包括J2ee,SQL,主流Web框架,中间件等面试过程中面试官经常问的问题,欢迎大家关注。一起学习,一起成长,文章底部有面试题。

mybatis的一级缓存

mybatis的一级缓存是基于sqlsession为生命周期的,如果多次执行同一个sql语句时,只需第一次连接数据库查询,剩下几次均可通过mybatis缓存获取。

生命周期:当你这个sqlsession没有了,会话结束,缓存就没有了;其次当你sql执行非sselect语句(add,delete,update,merge等)的时候,缓存也会被直接全部清理掉以保证数据一致性;sqlsession调用close方法时,以及缓存将不可使用;调用clearCache方法此时会清空缓存。

缓存原理:大体就是首先根据你的查询statementId参数的信息mybatis自动生产key的值,当再次查询的时,会将key值去Cache中查找对应的value,若存在,则获取Cache中的value,不查询数据库了

若无,则查询数据库,根据自动生成的key,已经查询出来的value保存到缓存中。

mybatis的二级缓存

mybatis的二级缓存是基于application为生命周期的。范围是按照每个namepace一个缓存来存贮和维护,同一个namespace放到一个缓存对象中,当这个namaspace中执行了!

其次当你sql执行非sselect语句(add,delete,update,merge等)的时候,整个namespace中的缓存全部清除掉。

假设RoleMapper.xml中可能会修改了Employee表的数据,导致缓存未能及时更新,这里就是为什么尽量避免使用二级缓存的缘故。

示意图来源(https://www.cnblogs.com/happyflyingpig/p/7739749.html)

面试拓展:

昨日回顾

1.写一下mybatis的批量插入demo。

2.讲讲mybatis和jpa的区别。

主要区别:

jpa 是对象和对象之间的映射,mybatis是对象与结果集之间的映射;

jpa移植性能好,mybatis需要改sql语句。

-------------

写的不好,如果大家有更高的见解欢迎评论。

mybatis 批量提交清除缓存_重学Mybatis(三)-------缓存 (含面试题)相关推荐

  1. Mybatis批量提交

    目录 一.通过foreach标签 二.通过Mybatis的ExecutorType.BATCH方式 有两种方式可以实现mybatis的批量提交,第一种便是foreach标签,第二种便是开始mybati ...

  2. 判断字符串 正则_(重学前端 - JavaScript(模块一)) 14、引用类型之 RegExp (正则)(详述)...

    上一篇文章介绍了 JavaScript 中的 Date 类型,从地理方面的原理知识开始入手,如果大家认真看过上一篇文章,相信 JavaScript 中的 Date 类型已经难不住大家了!!! 但是今天 ...

  3. ehcache 清除缓存_如何设计一个本地缓存

    作者:ksfzhaohuihttp://my.oschina.net/OutOfMemory/blog/3133013 前言 最近在看Mybatis的源码,刚好看到缓存这一块,Mybatis提供了一级 ...

  4. java批量执行查询sql语句_详解MyBatis直接执行SQL查询及数据批量插入

    一.直接执行SQL查询: 1.mappers文件节选 ${paramSQL} 2.DAO类节选 public interface SomeDAO{ List getInstanceModel(@Par ...

  5. java mysql 二级缓存_深入理解MyBatis中的一级缓存与二级缓存

    http://blog.csdn.net/weixin_36380516/article/details/73194758 先说缓存,合理使用缓存是优化中最常见的,将从数据库中查询出来的数据放入缓存中 ...

  6. linux mysql 查看缓存_详解MySQL查询缓存

    查询缓存是指存储使用SELECT语法查询到的返回到客户端的文本.当相同的请求再次发生时,会从查询缓存中获取数据,而非再执行一遍查询.查询缓存是共享Session会话的,所以一个客户端的请求可能与另一个 ...

  7. 京东java多级缓存_京东技术:多级缓存设计详解 | 给数据库减负

    来这里找志同道合的小伙伴! 作 者 简 介 王梓晨 自古兵家多谋,<谋攻篇>,"故上兵伐谋,其次伐交,其次伐兵,其下攻城.攻城之法,为不得已",可见攻城之计有很多种,而 ...

  8. mysql 预加载缓存_预加载与缓存

    最近的项目中为了能够提升那么一丢丢性能,尝试了一下对 chunks 进行预加载处理.虽然做了异步加载的处理,但是项目大小决定了还是有多个异步的 chunk.js 需要进行预加载,这里我指的是 prel ...

  9. dbcp连接池配置详解_重学MySQL:事务与连接池,一文详解带你搞懂

    拼多多三面惨败,java中间件.数据库与spring框架,答不上... 吊打MySQL:21性能优化实践+学习导图+55面试+笔记+20高频知识点 Mysql事务 事务: 事务指逻辑上的一组操作,组成 ...

最新文章

  1. java项目怎样提高性能_从代码的角度谈如何优化JAVA代码以提高性能【初、中级程序员必看】...
  2. NIO源码解析:IntBuffer基本使用
  3. C++ 类模板中友元函数问题
  4. .NET(C#) Internals: 以一个数组填充的例子初步了解.NET 4.0中的并行(一)
  5. Android 调整屏幕分辩率
  6. 《Android/OPhone开发完全讲义》连载(7):使用SharedPreferences存取复杂数据
  7. AcWing 4241. 货物运输
  8. 如何在没有域的环境中搭建AlwaysOn(一)
  9. 2022秋招面经(C++软开)
  10. 2022-2028全球与中国智能家居产品市场现状及未来发展趋势
  11. asp.net使用MailMessage发送邮件的方法
  12. Android微信支付集成流程及其常见错误
  13. 战神笔记本电脑自带access吗_战神GX9系列超享windows10搭载微软office2016
  14. 红米NOTE5 ROOT教程
  15. 用java编写图形用户界面_Java编写图形用户界面程序
  16. 自动生成课堂分析报告写后感想
  17. 下拉刷新及上拉加载更多的ListView
  18. UltraEdit 下载|UltraEdit破解版下载|UltraEdit 注册码
  19. OSChina 周二乱弹 ——喷子:我想追 @巴拉迪维
  20. LinkCloud谈云主机与主机托管主机租用的区别

热门文章

  1. 基于JAVA+SpringMVC+Mybatis+MYSQL的公寓租赁系统
  2. hashmap储存有向图_以邻接表的形式创建带权值的有向图即有向网
  3. [******] java多线程连续打印abc
  4. 0923-网络 文件上传
  5. Linux设置环境变量小结:设置永久变量临时变量 全局变量局部变量
  6. LINQ学习之旅——再次拾起
  7. Python稳基修炼之计算机等级考试易错概念题5(含答案)
  8. mysql 5.6.19 linux_MySQL 5.6.19升级到 5.7.9 步骤记录
  9. python redis list_Python操作redis实例小结【String、Hash、List、Set等】
  10. leetcode_150. 逆波兰表达式求值