首页 > 其他分享 >mybatis缓存

mybatis缓存

时间:2022-12-01 20:01:27浏览次数:38  
标签:缓存 SqlSession 查询 二级缓存 mybatis 数据

mybatis缓存原理

假设第一次向数据库发送查询请求,把返回的数据存在缓存里,mybatis缓存使用hashmap来存储数据,到第二次查询的时候,先到缓存里面查找有无这条数据,

如果做了增删改操作,缓存就会清空,避免缓存里的数据与数据库里的数据产生冲突,造成脏读.

mybatis使用hashmap存储缓存数据,key是sql+hashcode+sqlid语句,value是查询出来的映射生成的java对象

 

mybatis有两种缓存

一级缓存和二级缓存区别:

一级缓存:作用域是同一个SqlSession,不同的线程有各自的SqlSession,如果缓存区有数据,发起查询到各自的SqlSession一级缓存区域查找数据

二级缓存:作用域是同一个namespace,同一个namespace里的SqlSession可以到相同的二级缓存区域查找数据

 

其中,mybatis默认使用一级缓存

 

二级缓存用法

1.开启:到mybatis-config.xml配置文件中加入

<setting name="cacheEnabled" value="true"/>

2.在对应的mapper映射文件中加入

<cache />,表示此mapper开启二级缓存

3.将查询结果映射的pojo对象实现序列化和反序列化,实现Serializable接口

public class Order implements Serializable

禁用二级缓存:在statement语句中加入useCache="false",表示禁用二级缓存

 

在实际开发中,通常使用第三方缓存组件Redis,Ehchache...

标签:缓存,SqlSession,查询,二级缓存,mybatis,数据
From: https://www.cnblogs.com/pilpill/p/16942515.html

相关文章

  • MyBatis-入门
    1、第一个mybastis程序1.1导入jar包<mybatis.version>3.4.1</mybatis.version><mysql.version>5.1.47</mysql.version><!--mybatisbegin--><dependency>......
  • 12_缓存
    12.缓存12.1简介查询:连接数据库,耗资源 一次查询的结果,给他放在一个可以直接取到的地方!-->内存:缓存 我们再次查询相同的数据的时候。直接通过缓存查询,不用通过数据库......
  • 1_第一个mybatis程序
    1.步骤:搭建环境,导入mybatis,编写代码,测试​ 1.1.新建一个maven,删除src使其成为父工程​ 1.2.导入依赖:数据库驱动以及mybatis,junit​ 1.3创建子模块,不用再次导包......
  • MyBatis批量插入的五种方式
    前言这里我列举了MyBatis和MyBatis-Plus常用的五种批量插入的方式,进行了详细的总结归纳。准备工作MyBatis利用For循环批量插入MyBatis的手动批量提交MyBatis以集合方......
  • Mybatis-plus的简单CRUD
    简单CRUD  插入不建议用UUID作为主键,而是用自增ID @TableId(value="id",type=IdType.AUTO) privateIntegerid;雪花算法:使用一个64bit的long型的数字作为......
  • SpringBoot(七) - Redis 缓存
    1、五大基本数据类型和操作1.1字符串-string命令说明setkeyvalue如果key还没有,那就可以添加,如果key已经存在了,那会覆盖原有key的值getkey如果key还没有,......
  • MybatisPlus多表连接查询一对多分页查询数据
    一、序言在日常一线开发过程中,多表连接查询不可或缺,基于MybatisPlus多表连接查询究竟该如何实现,本文将带你找到答案。在多表连接查询中,既有查询单条记录的情况,又有列表查......
  • MyBatis~基于SqlSession的一级缓存和基于namespace的二级缓存
    映射语句文件中的所有select语句的结果将会被缓存。映射语句文件中的所有insert、update和delete语句会刷新缓存。缓存会使用最近最少使用算法(LRU,LeastRec......
  • MybatisPlus多表连接查询一对多分页查询数据
    一、序言在日常一线开发过程中,多表连接查询不可或缺,基于MybatisPlus多表连接查询究竟该如何实现,本文将带你找到答案。在多表连接查询中,既有查询单条记录的情况,又有列表查......
  • Mybatis执行流程详细剖析
    流程图第二步实例化SqlSessionFactoryBuilder->实例化SqlSessionFactory////Sourcecoderecreatedfroma.classfilebyIntelliJIDEA//(poweredbyFernFlo......