MyBatis的查询依据是:Sql的id+SQL语句。

Hibernate的查依据是:查询结果对象的id。

缓存的底层实现是一个Map,Map的value是查询结果。Map的key,即查询依据,使用的ORM架构不同,查询依据就不不同。

/*缓存的底层实现是一个Map,Map的value是查询结果*/
 /*Map的key,即查询依据,即使用的ORM框架不同,查询依据是不同的*/
 /*MyBatics的查询依据是:sql的id+sql语句*/
  /*Hibernate的查询依据是:查询结果对象的id*/
  /*证明从一级缓存中读取数据的依据,执行不同的方法(但sql语句相同)*/

/*增删改都会清空一级缓存,无论是否提交*/

<mapper namespace="org.lfz.dao.IStudentDao"><select id="selectStudentById" resultType="Student">select id,name,age,score from tb_student where id=#{xxx}</select><select id="selectStudentById2" resultType="Student">select id,name,age,score from tb_student where id=#{xxx}</select>
</mapper>
public class MyTest {private IStudentDao dao;@Beforepublic void before() {SqlSession sqlSession = MyBatisUtils.getSqlSession();dao = sqlSession.getMapper(IStudentDao.class);}/*证明一级缓存的存在*/@Testpublic void testSelectStudentById() {Student stu = dao.selectStudentById(2);System.out.println(stu);Student stu1 = dao.selectStudentById(2);System.out.println(stu1);}/*缓存的底层实现是一个Map,Map的value是查询结果*//*Map的key,即查询依据,即使用的ORM框架不同,查询依据是不同的*//*MyBatics的查询依据是:sql的id+sql语句*//*Hibernate的查询依据是:查询结果对象的id*//*证明从一级缓存中读取数据的依据,执行不同的方法(但sql语句相同)*/@Testpublic void testSelectStudentById2() {Student stu = dao.selectStudentById(2);System.out.println(stu);Student stu1 = dao.selectStudentById2(2);System.out.println(stu1);}/*增删改都会清空一级缓存,无论是否提交*/@Testpublic void test03() {Student stu = dao.selectStudentById(2);System.out.println(stu);//增删改都会清空一级缓存dao.insertStudent(new Student("小明",23,95.5));Student stu1 = dao.selectStudentById(2);System.out.println(stu1);}
}

MyBatis从缓存查找数据的依据相关推荐

  1. Mybatis一二级缓存的理解

        频繁的数据库操作是非常耗费性能的(主要是因为对于DB而言,数据是持久化在磁盘中的,因此查询操作需要通过IO,IO操作速度相比内存操作速度慢了好几个量级),尤其是对于一些相同的查询语句,完全可以 ...

  2. 【MyBatis源码解析】MyBatis一二级缓存

    MyBatis缓存 我们知道,频繁的数据库操作是非常耗费性能的(主要是因为对于DB而言,数据是持久化在磁盘中的,因此查询操作需要通过IO,IO操作速度相比内存操作速度慢了好几个量级),尤其是对于一些相 ...

  3. Mybatis一级缓存、二级缓存

    一级缓存:SqlSession mybatis一级缓存是指在内存中开辟一块区域,用来保存用户对数据库的操作信息(sql)和数据库返回的数据,如果下一次用户再执行相同的请求,那么直接从内存中读数数据而不 ...

  4. mybatis查询缓存——(十三)

    1.     mybatis缓存介绍 如下图,是mybatis一级缓存和二级缓存的区别图解: mybatis提供查询缓存,用于减轻数据压力,提高数据库性能. mybaits提供一级缓存,和二级缓存. ...

  5. MyBatis】MyBatis一级缓存和二级缓存

    转载自  MyBatis]MyBatis一级缓存和二级缓存 MyBatis自带的缓存有一级缓存和二级缓存 一级缓存 Mybatis的一级缓存是指Session缓存.一级缓存的作用域默认是一个SqlSe ...

  6. Mybatis的缓存机制Cache

    Mybatis提供对缓存的支持,分为一级缓存和二级缓存,在没有配置的情况下,系统默认会使用一级缓存. 一级缓存(SqlSession级别) 我们都知道每个SqlSession对象之间的缓存是互不影响的 ...

  7. 关于MyBatis的缓存

    我们大概都有所了解MyBatis的缓存级别分为两种,一级缓存和二级缓存. MyBatis的一级缓存是SqlSession级别的缓存,二级缓存是Mapper级别的缓存.当我们查询数据时,使用的是同一个s ...

  8. Mybatis一级缓存、整合第三方缓存ehcache、Mybatis二级缓存

    8. 缓存 8.1 一级缓存 在对数据库的一次会话中,我们有可能会反复地执行完全相同的查询语句,如果不采取一些措施的话,每一次查询都会查询一次数据库,而我们在极短的时间内做了完全相同的查询,那么它们的 ...

  9. Hibernate和MyBatis的缓存机制和比较

    原文地址:https://my.oschina.NET/u/1445731/blog/416200?p=%7B%7BtotalPage%7D%7D Mybatis缓存 分为1级缓存和2级缓存,2级缓存 ...

最新文章

  1. div css 常用技巧
  2. Python的零基础超详细讲解(第五天)-Python的运算符
  3. 计算机网页div怎么划分,《网页布局与实现(DIV+CSS)》
  4. MyBatis配置项--properties
  5. 网站外链查询接近100%精确的方法
  6. node08-express
  7. 网址发布页模板,带网址测速+域名检测功能
  8. 1_python基础—变量
  9. POJ NOI0105-33 计算分数加减表达式的值
  10. rk3128屏幕占空比参数设置_rk3128 — spdif dts配置
  11. Openwrt 摄像头使用
  12. linux配置c11,C11标准的泛型机制
  13. 非线性薛定谔方程用matlab,非线性薛定谔方程数值解的matlab仿真.docx
  14. 如何快速区分单模与多模光纤收发器?
  15. win10 win11 创建共享文件夹 mac 苹果电脑共享 无internet 安全,你的电脑只能访问本地网络中的其它设备 共享文件夹会导致本地电脑无法上网,
  16. win7上怎么安装linux系统安装教程,怎么装系统双系统安装教程 win7 linux
  17. Java爬虫之JSoup使用教程
  18. 将VSCode语言环境设置为中文
  19. 深度学习入门笔记(五):神经网络的编程基础
  20. 微信吸粉技巧:“傻逼”的毅力

热门文章

  1. Python获取一个字符串所有连续子串
  2. socket的NIO操作
  3. modbus4-232 485 单机 多机
  4. FLASH CS3中的FLA形式组件制作教程
  5. 用jQuery实现网页卷轴的效果
  6. 手动建立Mysql表实体类技巧
  7. Micropython教程之TPYBoard制作蓝牙+红外循迹小车
  8. 关于正则验证中文名字2-5位的时候
  9. 伪元素::before与::after的用法
  10. 基于EM的多直线拟合实现及思考