一、开启二级缓存

1、在 MyBatis 的配置文件中开启二级缓存

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

2、在使用的 Mapper 接口上面添加注解 @CacheNamespace

@CacheNamespace
public interface EmployeeMapper extends MyMapper<Employee{

}

3、实体类需要支持序列化

二级缓存会把对象放在缓存里面,需要实现序列化接口。

public class Employee implements Serializable{}

二、测试

测试代码:

public class CacheTest {
    private ApplicationContext ioc = new ClassPathXmlApplicationContext("applicationContext.xml");
    private EmployeeService employeeService = ioc.getBean(EmployeeService.class);

    @Test
    public void test() {
        List<Employee> emp = employeeService.getAll();
        emp.forEach(System.out::println);

        emp = employeeService.getAll();
        emp.forEach(System.out::println);
    }
}

    public List<Employee> getAll() {
        return employeeMapper.selectAll();
    }

运行结果:

  • 第一次查询:

  • 第二次查询: 可以看到二级缓存生效了,没有重新发送SQL语句,是从缓存中获取的,缓存命中率为 0.5

三、总结

  1. 在 MyBatis 的配置文件中开启二级缓存

  2. 在使用的 Mapper 接口上面添加注解 @CacheNamespace

  3. 实体类需要支持序列化

posted on 2021-09-17 10:18  格物致知_Tony  阅读(102)  评论(0)    收藏  举报