缓存作用
- 当对某些数据的查询请求频繁,且数据不经常修改时,使用缓存机制可以提高查询效率
- 数据库发生commit操作时,缓存清空,防止一直查询缓存中的旧数据
mybatis缓存执行流程
mybatis一级和二级缓存
- 一级缓存作用域:sqlSession对象
- 二级缓存作用域:Mapper.xml文件
- 查询顺序:先二级缓存,再一级缓存,最后查数据库
mybatis一级缓存测试
数据库未发生commit操作
测试代码
package com.example.mapper;
import com.example.pojo.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 org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
public class TestUsersMapper {
//SqlSession对象
SqlSession sqlSession;
//mybatis动态代理对象
UsersMapper usersMapper;
//获取SqlSession
@Before
public void getSqlSession() throws IOException {
//读取核心配置文件
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//创建SqlSessionFactory对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//获取SqlSession
sqlSession = factory.openSession();
//获取mybatis动态代理对象
usersMapper = sqlSession.getMapper(UsersMapper.class);
}
//归还SqlSession
@After
public void closeSession(){
sqlSession.c