mybatis缓存

本文详细介绍了MyBatis的缓存概念及作用,包括一级缓存和二级缓存的工作机制。一级缓存是默认的本地缓存,而二级缓存需要手动开启,基于namespace级别。开启二级缓存的步骤包括全局配置、Mapper XML配置和实体类序列化。缓存能够减少数据库交互,提高系统效率,适合存放不常改变的高频查询数据。在实际应用中,通常使用如Redis这样的外部数据库作为更高效的缓存解决方案。
摘要由CSDN通过智能技术生成

缓存 什么叫缓存?
缓存是存在内存中的临时数据
将用户经常查询的数据放在缓存中,用户去查时就不用从数据库中查询,而是从缓存中查询 从而提高效率 解决高并发系统的性能问题

为什么使用缓存?
缓存可以减少和数据库的交互次数 减少开销,提高系统效率
什么样的数据可以使用缓存
经常查询 并且不经常改变的数据 可以使用缓存

mybatis定义了两个等级的缓存 一级缓存和二级缓存
默认是一级缓存 也称之为本地缓存

二级缓存:二级缓存需要手动开启配置,它基于namespace级别的缓存

为了提高拓展性 mybatis定义了缓存接口 cache 可以通过实现接口来定义二级缓存
二级缓存也叫全局缓存 基于namespace级别的缓存 一个名称空间对应一个二级缓存

工作机制:
一个会话查询一条数据,这个数据就会被放在当前会话的一级缓存中,如果会话关闭 一级缓存就没了。
但是我们想让会话关闭 缓存还能用,我们可以使用二级缓存 这样,一级缓存的会话关闭后 一级缓存的内容就会到二级缓存中
这样新的会话查询信息就可以从二级缓存中获取内容

不同的mapper查出的数据会放在自己对应的缓存中

使用步骤
1 开启全局缓存

<!--                    显示的设置二级缓存为true -->
        <setting name="cacheEnabled" value="true"/>
2  在要使用二级缓存的mapper.xml 中开启 


<!--    开启二级缓存-->
    <cache/>

3  将实体类序列化(实现Serializable 接口)
package com.mumu.pojo;

import lombok.Data;

import java.io.Serializable;
import java.util.Date;
@Data
public class Blog implements Serializable {

    private  String id;
    private  String title;
    private  String  author;
    private Date createTime;
    private  int views;


}

开启了二级缓存 在同意个mapper下就有效
所有的数据会放在一级缓存中 只有会话提交 或关闭的时候 才会提交到二级缓存中

mybatis缓存顺序
第一次查询 走数据库 然后会产生一个一级缓存 放在一级缓存中
当一级缓存关闭,一级缓存中的内容到二级缓存中
当用户做查询操作时 会从二级缓存中开始找 找不到再去一级找 找不到就去数据库中找

用户查询——> 数据库——>缓存——>用户查询——>二级缓存——>一级缓存——>数据库

一般工作都用Redis数据库做缓存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值