注意点 1. 重点注意:session关闭后才会 提交到二级缓存 2.执行增删改会把二级缓存清空 3.进行二级缓存的对象必须实现 Serializable 接口 4. 不写type类型 默认使用mybatis自带的二级缓存perpetualCache 开启缓存 <cache ></cache>
配置文件
<settings>
<!-- 允许二级缓存 开启-->
<setting name="cacheEnabled" value="true"/>
</settings>
映射文件
<!--不写type类型 默认使用mybatis自带的二级缓存 开启缓存-->
<cache ></cache>
测试
package com.mybatis.test;
import com.mybatis.mapper.UserMapper;
import com.mybatis.model.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
/**
* 二级缓存 需要手动开启
*/
public class Demo22 {
private static SqlSession sqlSession1;
private static SqlSession sqlSession2;
static {
// a)读取配置文件;
InputStream is = null;
try {
is = Resources.getResourceAsStream("SqlMapConfig.xml");
//b)通过SqlSessionFactoryBuilder创建SqlSessionFactory会话工厂。
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
sqlSession1 = sqlSessionFactory.openSession();
sqlSession2 = sqlSessionFactory.openSession();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 重点注意:session关闭后才会 提交到二级缓存
* 执行增删改会把二级缓存清空
* @param args
*/
public static void main(String[] args) {
UserMapper mapper1 = sqlSession1.getMapper(UserMapper.class);
UserMapper mapper2 = sqlSession2.getMapper(UserMapper.class);
User user1 = mapper1.findUser(1);
System.out.println(user1);
sqlSession1.close();
User user2 = mapper2.findUser(1);
System.out.println(user2);
}
}