温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java mybatis如何缓存数据

发布时间:2026-09-23 07:47:33 来源:亿速云 阅读:99 作者:小樊 栏目:编程语言

在 Java + MyBatis 中,缓存主要分为 一级缓存 和 二级缓存,合理使用可以显著提升性能。下面系统地给你讲一下。


一、MyBatis 一级缓存(默认开启)

1. 是什么

  • 作用范围:同一个 SqlSession
  • 默认开启,无需配置
  • 同一个 Session 内,相同的查询会直接走缓存

2. 示例

SqlSession session = sqlSessionFactory.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);

User u1 = mapper.selectById(1); // 查数据库
User u2 = mapper.selectById(1); // 走一级缓存

3. 一级缓存失效情况

  • 调用 sqlSession.clearCache()
  • 执行了 INSERT / UPDATE / DELETE
  • 不同 SqlSession
  • 手动提交或关闭 Session

二、MyBatis 二级缓存(跨 Session)

1. 是什么

  • 作用范围:同一个 Mapper(Namespace)
  • 多个 SqlSession 可共享
  • 需要手动开启

2. 开启方式

(1)全局开启(mybatis-config.xml)

<settings>
    <setting name="cacheEnabled" value="true"/>
</settings>

(2)Mapper 中声明

<mapper namespace="com.example.mapper.UserMapper">
    <cache/>
</mapper>

或使用注解:

@CacheNamespace
public interface UserMapper {
}

3. 示例

SqlSession s1 = factory.openSession();
UserMapper m1 = s1.getMapper(UserMapper.class);
m1.selectById(1); // 查库
s1.close();

SqlSession s2 = factory.openSession();
UserMapper m2 = s2.getMapper(UserMapper.class);
m2.selectById(1); // 走二级缓存

4. 二级缓存注意点

  • 实体类必须 序列化
public class User implements Serializable {}
  • 执行 update/delete/insert 会清空缓存
  • 适合 读多写少 的数据

三、自定义缓存(Redis / Ehcache)

MyBatis 支持自定义 Cache 实现。

示例:使用 Redis

<cache type="com.example.RedisCache"/>
public class RedisCache implements Cache {
    // 实现 get / put / clear 等方法
}

四、Spring + MyBatis 场景(推荐)

如果你用的是 Spring Boot,更推荐:

1. Spring Cache(@Cacheable)

@Service
public class UserService {

    @Cacheable("user")
    public User getUser(Integer id) {
        return userMapper.selectById(id);
    }
}

2. 配合 Redis

spring:
  cache:
    type: redis

五、总结对比

缓存类型 范围 默认 是否共享
一级缓存 SqlSession 是 否
二级缓存 Mapper 否 是
Spring Cache 方法级 否 可配置

如果你愿意,我可以:

  • 给你一个 完整 MyBatis + Redis 缓存示例
  • 或针对 高并发/分布式场景 给你缓存方案建议
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手