缓存
使用缓存,我们可以避免频繁的与数据库进行交互,尤其是在查询越多、缓存命中越高的情况下,使用缓存对性能的提高更明显。
MyBatis分别支持一级缓存和二级缓存,其中一级缓存是sqlSession级的缓存,而二级缓存则可以实现多个sqlSession间的缓存。
一级缓存
一级缓存是sqlSession
级的,是因为它支持同一个sqlSession
下的缓存,缓存在同一个sqlSession
之间是共享的。
一级缓存分为两个范围:
statement:就是一个sql语句
session:有数据库产生一个连接,即一个sqlSession
mybatis默认是开启一级缓存的,不需要专门进行配置,
一级缓存测试
@Operation(summary = "根据id获取用户")
@GetMapping("/api/user")
public Object user2() {
User userById1 = userMapper.findUserById(7);
System.out.println(userById1);
User userById2 = userMapper.findUserById(7);
System.out.println(userById2);
return userById2;
}

接下来我们在方法上添加@Transactional
注解,在执行一次,就会发现sql
语句只执行了一次,那么本次的缓存被命中了,第二次的查询是直接从缓存中获取到的数据。

参照:https://zhuanlan.zhihu.com/p/142794376
二级缓存
默认情况下,只启用了本地的会话缓存,它仅仅对一个会话中的数据进行缓存。 要启用全局的二级缓存,只需要在你的 SQL 映射文件中添加一行:
<cache/>
最后更新于
这有帮助吗?