> MyBatis二级缓存是Mapper级别的共享缓存,跨SqlSession生效。它在会话关闭或提交后将数据存入,适合读多写少场景,但需注意分布式环境下的一致性问题。 我们来详细、清晰地剖析一下MyBatis的二级缓存是如何工作的。 一、 什么是MyBatis二级缓存? 首先,要理解二级缓存,我们需要先对比一下一级缓存。 一级缓存(Local Cache): 作用域: 级别。它是默认开启且无法关闭的。 生命周期:与 的生命周期相同。当 被创建时,一个新的一级缓存被创建;当 被关闭或清空时,它里面的一级缓存也随之销毁。 工作方式:在同一个 中,执行完全相同的SQL查询(相同的、相同的参数等),第一次查询会从数据库获取数据并放入缓存,后续的查询会直接从这个缓存中获取,不再请求数据库。 共享性:一级缓存是不共享的。不同的 实例之间,它们的一级缓存是相互隔离的。 二级缓存(Global Cache): 作用域: 级别,也就是一个Mapper映射文件。 生命周期:与应用程序的生命周期相同。一旦数据被缓存,它可以被该下的所有 共享。 工作方式:当一个 提交了事务()或者关闭了()之后,它的...