MyBatis 的二级缓存是指在多个 SqlSession 中共享数据的缓存。当多个 SqlSession 对同一个 Mapper 进行操作时,如果之前的操作已经将数据存储在了缓存中,则后面的操作可以直接从缓存中获取数据,而不必再次执行 SQL 语句。

MyBatis 的二级缓存是基于 namespace 进行的,也就是说,不同的 Mapper 拥有不同的缓存空间。MyBatis 的缓存机制是可插拔的,可以通过实现 Cache 接口来扩展缓存功能。

虽然 MyBatis 的二级缓存可以提高性能,但是需要注意以下几点:

  1. 缓存只会缓存查询的结果,而不会缓存更新、插入、删除操作的结果;
  2. 同一个 Mapper 内的操作会共享同一个缓存,如果一个操作修改了数据,则其他操作也会受到影响;
  3. 缓存的有效范围是 SqlSession,如果多个 SqlSession 对同一个 Mapper 进行操作,则缓存的共享范围就是限定在这些 SqlSession 内部;
  4. 缓存的数据可能会过期,如果缓存中的数据过期,则会重新执行 SQL 语句获取最新的数据。
mybatis 二级缓存

原文地址: http://www.cveoy.top/t/topic/g7ko 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录