杭州建设网站官网,做网站服务器还是虚拟空间好,哈尔滨最好的网站建设公司,知名网站设计欣赏系列文章目录
1、mybatis简介及数据库连接池 2、mybatis简单使用 3、mybatis中selectOne的使用 4、mybatis中resultMap结果集的使用 5、mybatis实用教程之XML实现动态sql 6、Mybatis使用注解实现复杂动态SQL Mybatis缓存机制 系列文章目录前言1、配置二级缓存2、使用场景…系列文章目录
1、mybatis简介及数据库连接池 2、mybatis简单使用 3、mybatis中selectOne的使用 4、mybatis中resultMap结果集的使用 5、mybatis实用教程之XML实现动态sql 6、Mybatis使用注解实现复杂动态SQL Mybatis缓存机制 系列文章目录前言1、配置二级缓存2、使用场景3、注意事项 前言
MyBatis 提供了两级缓存机制一级缓存本地缓存和二级缓存全局缓存。一级缓存是默认开启的它是基于 SqlSession 级别的缓存同一个 SqlSession 内相同的查询会被缓存起来二级缓存是跨 SqlSession 的缓存它可以被多个 SqlSession 共享需要在 Mapper 文件中显式配置启用。
一级缓存对于减少数据库访问提高性能有一定帮助但是仅限于同一个 SqlSession 内。而二级缓存则是跨 SqlSession 的可以跨 Session 共享缓存结果适用于跨 Session 但是相同查询的情景。 1、配置二级缓存
在 MyBatis 的配置文件中开启二级缓存
configurationsettingssetting namecacheEnabled valuetrue//settings
/configuration在需要使用二级缓存的 Mapper 文件中添加 cache 标签
mapper namespacecom.example.mapper.UserMappercache/!-- 其他 SQL 映射配置 --
/mapper2、使用场景
假设有一个用户信息查询的场景多个不同的用户查询请求频繁访问相同的数据。
// UserMapper.java
public interface UserMapper {ListUser getAllUsers();
}!-- UserMapper.xml --
mapper namespacecom.example.mapper.UserMappercache/select idgetAllUsers resultTypeUserSELECT * FROM users/select
/mapper// 使用代码
SqlSessionFactory factory new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader(mybatis-config.xml));
try (SqlSession sqlSession factory.openSession()) {UserMapper userMapper sqlSession.getMapper(UserMapper.class);// 第一次查询ListUser users1 userMapper.getAllUsers();// 再次查询相同数据ListUser users2 userMapper.getAllUsers();
}3、注意事项
缓存的命中和失效机制如果数据库中数据被修改会导致对应的缓存失效需要注意缓存的更新策略。需要小心缓存带来的数据一致性问题在某些情况下需要手动清除缓存以保证数据的最新性。
这个示例展示了 MyBatis 的二级缓存配置和使用场景但在实际应用中需要根据业务情况和性能调优来决定是否使用缓存并针对具体情况进行调整。