MyBatis 缓存机制详解

一、一级缓存

一级缓存(也叫本地缓存)是 MyBatis 默认开启的,是基于 SqlSession 级别的缓存。也就是说,在同一个 SqlSession 中,对于相同的查询,如果参数相同,MyBatis 会从一级缓存中直接获取数据,而不会再去执行数据库查询。

1. 特点

作用范围:同一个SqlSession 实例。

默认开启:无需额外配置。

清空时机:

  • 执行insert、update、delete 操作时,一级缓存会被清空。
  • 调用SqlSession.clearCache() 方法手动清空。
22. 工作原理

当使用同一个SqlSession 执行相同的 SQL 查询时,MyBatis 会先检查一级缓存是否存在对应的查询结果。如果存在,则直接返回缓存中的结果;如果不存在,则执行数据库查询并将结果放入一级缓存。

使用示例:

try (SqlSession session = sqlSessionFactory.openSession()) {
    UserMapper mapper = session.getMapper(UserMapper.class);
    User user1 = mapper.getUserById(1); // 查询数据库,结果存入一级缓存

你可能感兴趣的:(Java研发实用技巧,mybatis,缓存,oracle)