标签:方便 map style name 避免 util 清理 gets 技术
使用缓存, 我们可以避免频繁的与数据库进行交互
MyBatis 内置了一个强大的事务性查询缓存机制,它可以非常方便地配置和定制, 分为一级缓存和二级缓存。 但是在默认的情况下, 只开启一级缓存(一级缓存是对同一个 SqlSession 而言的)
一级缓存也叫本地缓存:sqlSession
@Test
public void test(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.queryUserById(1);
System.out.println(user);
System.out.println("=======================");
User user1 = mapper.queryUserById(1);
System.out.println(user1);
System.out.println("=======================");
System.out.println(user==user1);
sqlSession.close();
二级缓存也叫全局缓存,一级缓存作用域太低了,所以诞生了二级缓存
基于namespace级别的缓存,一个命名空间,对应一个二级缓存
工作机制:
1. 显示的开启全局缓存(尽管默认是开启的)
<settings> <setting name="cacheEnabled" value="true"/> </settings>
2.在使用二级缓存的Mapper中开启
<!-- 在当前Mapper.xml中使用二级缓存--> <cache/>
也可以自定义参数
<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>
3.测试
我们需要将实体类序列化,否则会报错
小结:
只要开启了二级缓存,在同一Mapper下就有效
所有的数据都会先放在一级缓存中
只有当会话提交,或者关闭的时候,才会提交到二级缓存中
标签:方便 map style name 避免 util 清理 gets 技术
原文地址:https://www.cnblogs.com/IanIan/p/14309744.html