首页 > 其他分享 >Mybatis缓存机制

Mybatis缓存机制

时间:2023-05-07 18:23:12浏览次数:40  
标签:语句 缓存 映射 SqlSession 查询 二级缓存 Mybatis 机制

1.ORM映射:将数据库中的一条语句映射到Java对象。

2.MyBatis缓存机制:执行查询语句时候,将查询结果放到缓存当中(内存),如果下一次还是执行完全相同的查询语句,直接从缓存中拿数据。不再查数据库。不再去硬盘上找数据。目的是为了提高效率,通过减少IO的方式提高效率。

3.缓存指针对查询语句进行缓存,包括

一级缓存 查询到的数据存储到SqlSession中,只针对当前的一次会话,缓存范围小。

二级缓存 查询到的数据存储到SqlSessionFactory中,一个数据库连接只有一个SqlSessionFactory,缓存范围较大。

或集成其他第三方的缓存,EhCache

4.一级缓存是默认开启的,不需要任何配置,只要使用同一个SqlSession对象执行同一条SQL语句,就会走缓存。

  SqlSession对象不一样,不走缓存,查询条件不一样也不走缓存。

  在两次相同的查询语句之间执行delete update insert语句,即使不是对同一张表操作也清空缓存,执行sqlSession.clearcache()语句不走缓存

5.二级缓存

  要想使用二级缓存,四个条件缺一不可。

 1.<setting name="cacheEnable" value="true">全局性地开启或关闭所有映射配置文件中已配置的任何缓存,默认是true,无需设置

  2.二级缓存默认是开启的,只需要在sqlMapper.xml文件中添加<cache/>标签,用来表示使用二级缓存。

  3.使用二级缓存的实体类对象必须是可序列化的,也就是必须实现Serializable接口

  4.SqlSession对象关闭或提交之后,一级缓存中的数据才会被写入二级缓存,此时二级缓存才可用。

标签:语句,缓存,映射,SqlSession,查询,二级缓存,Mybatis,机制
From: https://www.cnblogs.com/zhang12345/p/17379728.html

相关文章

  • Mybatis-Plus 简介及入门案例
    Mybatis简介MyBatis-Plus(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。官网地址:https://www.baomidou.com/特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本CURD,性能基本......
  • scandir,major和minor,state,无锁机制----比较交换CAS Compare And Swap,dirent,sprintf,fop
    文章目录1.Linuxc目录操作函数scandir2.Linux系统设备(device)的major和minornumber3.state4.无锁机制----比较交换CASCompareAndSwap5.dirent6.sprintf7.fopen8.atoi函数9.strtok10.strtol1.Linuxc目录操作函数scandir(1)头文件:#include<dirent.h>定义函数:intscandir(......
  • springboot集成下,mybatis的mapper代理对象究竟是如何生成的
    springboot集成下,mybatis的mapper代理对象究竟是如何生成的 前情回顾Mybatis源码解析-mapper代理对象的生成,你有想过吗,我们讲到了mybatis操作数据库的流程:先创建SqlSessionFactory,然后创建SqlSession,然后再创建获取mapper代理对象,最后利用mapper代理对象完成数据库......
  • MyBatis-02CRUD操作及配置解析01
    上集回顾:第一个程序namespace将上面案例中的UserMapper接口改名为UserDao;将UserMapper.xml中的namespace改为为UserDao的路径.再次测试结论:配置文件中namespace中的名称为对应Mapper接口或者Dao接口的完整包名,必须一致!1CRUD操作及配置解析1.1selectselect标......
  • 注意力机制对一维数据特征提取
    点击查看代码#第一步读取csv文件(循环读取)#第二步将数据转化为tensor形式#第三步创建一个列表将tensor逐个放入列表#第四步写入标签importcsvimportnumpyasnpimporttorchfromtorch.utils.dataimportTensorDatasetimporttorchfromtorch.utils.dat......
  • Mybatis设计模式
    创建型建造者模式,工厂模式我们在单独Mybatis框架执行SQL语句的时候,需要获得SqlSession实例来直接执行已映射的SQL语句,在获得SqlSession实例的过程中,就使用了建造者模式和工厂模式。我们来看看一下调用过程:1Stringresource="org/mybatis/example/mybatis-config.xml";2......
  • 一种通过注入机制获取资源的方法
    目的:从地图网站上获取瓦片文件,但直接访问图片地址显示被禁止。需要绕开这个禁止。方法:通过在页面脚本中进行注入,在加载资源的时候,直接将资源下载到本地下载文件夹中关键:1、注入方法,将原事件函数指向新变量,用自己的函数替代,并执行原函数以保证程序正常运行;2、新变量仍在原对象......
  • laravel-permission 缓存导致的Redis带宽占用问题
     先决条件spatie/laravel-permission:3.18.0权限数:634角色数:94问题laravel-permission的缓存机制设计的不太合理将所有的权限存放在一个大set中,且存放了许多不必要的信息。当项目拥有大量的角色权限,使得这个set达到了11mb,非常影响性能。解决方案spatie/laravel......
  • sql注入原理和mybatis解决sql注入
    转载:https://www.bilibili.com/video/BV1ZR4y1Y745/?spm_id_from=333.880.my_history.page.click&vd_source=46d50b5d646b50dcb2a208d3946b1598https://juejin.cn/post/7064740474057146398#heading-11......
  • hibernate二级缓存(包括注解方式)
    二级缓存配置(spring+hibernate)说明:本人不建议使用查询缓存,因为查询缓存要求完全相同的查询sql语句才会起作用,所说的查询缓存是针对第二次查询时sql语句与第一次sql语句完全相同那么就可以从缓存中取数据而不去数据库中取数据了,在不启用查询缓存的情况下......