MyBatis的缓存机制能够有效地提高查询性能,提供两种缓存机制,分别是一级缓存(Local Cache)和二级缓存(Clobal Cache)。
- 一级缓存(Local Cache):
- 范围:一级缓存是在SqlSession级别的缓存,即在同一个SqlSession中执行的SQL语句将会共享缓存。
- 生命周期:一级缓存的生命周期与SqlSession的生命周期相同,当SqlSession关闭时,缓存将被清空。
- 默认开启:一级缓存默认开启的,可以通过配置关闭。
- 作用范围:以及缓存对于同一个SqlSession中相同查询是有效的,对于不同SqlSession或者在不同事务中是不生效的。
- 二级缓存(Global Cache):
- 范围:二级缓存是在Mapper级别的缓存,即同一个namespace的Mapper共享缓存。
- 生命周期:二级缓存的生命周期与整个应用的生命周期相同,在应用重启前一直有效。
- 默认关闭:二级缓存默认是关闭的,需要在MyBatis的配置文件中进行配置开启
- 作用范围:二级缓存对于同一个Mapper中的相同查询是有效的,对于不同的Mapper是不生效的