file-type

Mybatis-plus 缓存机制详解

DOCX文件

3.4MB | 更新于2024-06-22 | 166 浏览量 | 4 评论 | 0 下载量 举报 1 收藏
download 立即下载
Mybatis-Plus 缓存机制详解 Mybatis-Plus 缓存机制是 Mybatis 的一个重要组件,它可以大幅度提高系统的查询效率,解决高并发系统的性能问题。在本文中,我们将详细介绍 Mybatis-Plus 缓存机制的原理、配置和使用。 什么是缓存? 缓存是存在内存中的临时数据,将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。 为什么使用缓存? 使用缓存的主要原因是减少和数据库的交互次数,减少系统开销或IO,提高系统效率。当系统中存在大量的查询操作时,缓存可以大幅度减少数据库的压力,提高系统的响应速度。 什么样的场景使用缓存? 缓存适用于经常查询同时不经常修改的数据。例如,在一个电商平台中,用户经常查询的商品信息可以被缓存在内存中,以提高查询效率。 Mybatis-Plus 缓存机制 Mybatis-Plus 提供了两种缓存机制:一级缓存和二级缓存。 一级缓存 一级缓存是 Mybatis-Plus 的默认缓存机制。每一个 SqlSession 中都持有了自己的缓存,一种是 SESSION 级别,即在一个 Mybatis 会话中执行的所有语句,都会共享这一个缓存。另一种是 STATEMENT 级别,可以理解为缓存只对当前执行的这一个 statement 有效。 一级缓存的实现方式是每一个 SqlSession 中持有了自己的 Executor,每一个 Executor 中有一个 LocalCache。当用户发起查询时,Mybatis 会根据当前执行的 MappedStatement 生成一个 key,去 LocalCache 中查询,如果缓存命中的话,返回。如果缓存没有命中的话,则写入 LocalCache,最后返回结果给用户。 一级缓存的配置 一级缓存可以通过在 Mybatis 的配置文件中添加以下配置来开启: ``` <setting name="cacheEnabled" value="true"/> ``` 一级缓存的使用 一级缓存可以在 Mybatis 的 Mapper 接口中使用,例如: ```java @CacheNamespace(ref="myMapper") public interface MyMapper { @Select("SELECT * FROM users WHERE id = #{id}") User getUser(@Param("id") int id); } ``` 二级缓存 二级缓存是 Mybatis-Plus 的一种高级缓存机制。二级缓存可以跨越多个 SqlSession,实现了缓存的共享。 二级缓存的配置 二级缓存可以通过在 Mybatis 的配置文件中添加以下配置来开启: ``` <setting name="cacheEnabled" value="true"/> <cache type="org.mybatis.caches.ehcache.EhcacheCache"> <property name="cacheName" value="myCache"/> </cache> ``` 二级缓存的使用 二级缓存可以在 Mybatis 的 Mapper 接口中使用,例如: ```java @CacheNamespace(ref="myMapper") public interface MyMapper { @Select("SELECT * FROM users WHERE id = #{id}") User getUser(@Param("id") int id); } ``` 缓存的命中原则 缓存的命中原则是根据 StatementId、查询参数、分页参数、Sql 语句、环境等多个因素来判断是否命中缓存。 结论 Mybatis-Plus 缓存机制是提高系统查询效率的重要手段。通过了解缓存的原理、配置和使用,我们可以更好地应用缓存来提高系统的性能。

相关推荐

filetype

<?xml version="1.0" encoding="UTF-8"?> 4.0.0 org.springframework.boot spring-boot-starter-parent 3.4.7 com.example takeoutsystem 0.0.1-SNAPSHOT takeoutsystem takeoutsystem <java.version>17</java.version> <mybatis-plus.version>3.5.7</mybatis-plus.version> <mybatis.version>3.5.15</mybatis.version> <mybatis-spring.version>3.0.3</mybatis-spring.version> <jjwt.version>0.11.5</jjwt.version> <springdoc-openapi.version>2.8.5</springdoc-openapi.version> <thymeleaf-extras-springsecurity6.version>3.1.2.RELEASE</thymeleaf-extras-springsecurity6.version> dev aliyun-maven https://maven.aliyun.com/repository/public true false org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-thymeleaf com.baomidou mybatis-plus-boot-starter ${mybatis-plus.version} org.mybatis mybatis org.mybatis mybatis-spring com.baomidou mybatis-plus org.mybatis mybatis ${mybatis.version} org.mybatis mybatis-spring ${mybatis-spring.version} com.baomidou mybatis-plus ${mybatis-plus.version} com.mysql mysql-connector-j runtime com.h2database h2 test io.jsonwebtoken jjwt-api ${jjwt.version} io.jsonwebtoken jjwt-impl ${jjwt.version} runtime io.jsonwebtoken jjwt-jackson ${jjwt.version} runtime org.springframework.boot spring-boot-starter-security org.thymeleaf.extras thymeleaf-extras-springsecurity6 ${thymeleaf-extras-springsecurity6.version} org.springdoc springdoc-openapi-starter-webmvc-ui ${springdoc-openapi.version} org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine com.baomidou mybatis-plus-boot-starter-test ${mybatis-plus.version} test org.mybatis mybatis org.mybatis mybatis-spring org.springframework.security spring-security-test test org.projectlombok lombok src/main/resources true application*.yml application*.properties src/main/resources false application*.yml application*.properties org.springframework.boot spring-boot-maven-plugin org.projectlombok lombok dev true dev src/main/resources true application.yml application-dev.yml prod prod src/main/resources true application.yml application-prod.yml 修改POM.xml文件,降级MYBATIS版本

资源评论
用户头像
扈涧盛
2025.08.24
内容简明扼要,适合快速了解缓存应用方法
用户头像
无声远望
2025.06.09
适合有一定 Java 开发基础的开发者阅读和参考🍕
用户头像
东方捕
2025.04.23
一篇深入讲解 MyBatis-Plus 缓存机制的文章,适合进阶学习
用户头像
食色也
2025.04.20
对 MyBatis 缓存的实现原理有详细说明,值得收藏💪
蜗牛乌龟一起走
  • 粉丝: 4305
上传资源 快速赚钱