在学习mybatis中的二级缓存的时候,出现了二级缓存测试没效果的情况,找了很久没找到原因,运行结果中也有二级缓存的Cache Hit Ratio
一、全局配置文件
<settings>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>
<setting name="cacheEnabled" value="true"/>
</settings>
二、namespace
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gjhqq.mybatis_inf.EmployeeMapper">
<cache eviction="FIFO" flushInterval="60000" readOnly="true" size="1024"></cache>
三、Test类
@Test
public void testSecondCache() throws IOException {
SqlSession sqlSession1 = sqlSessionFactory().openSession();
SqlSession sqlSession2 = sqlSessionFactory().openSession();
try {
EmployeeMapper employeeMapper1 = sqlSession1.getMapper(EmployeeMapper.class);
EmployeeMapper employeeMapper2 = sqlSession2.getMapper(EmployeeMapper.class);
Employee emp1 = employeeMapper1.selectOne(2);
System.out.println(emp1);
sqlSession1.close();
Employee emp2 = employeeMapper2.selectOne(2);
System.out.println(emp2);
sqlSession2.close();
} finally {
}
}
运行结果:
DEBUG 03-02 13:20:55,243 Cache Hit Ratio [com.gjhqq.mybatis_inf.EmployeeMapper]: 0.0 (LoggingCache.java:62)
DEBUG 03-02 13:20:55,249 ==> Preparing: select * from tbl_employee where id = ? (BaseJdbcLogger.java:145)
DEBUG 03-02 13:20:55,267 ==> Parameters: 2(Integer) (BaseJdbcLogger.java:145)
DEBUG 03-02 13:20:55,279 <== Total: 1 (BaseJdbcLogger.java:145)
Employee [id=2, last_name=lisi, gender=1, email=hqq@gj.com, dept_id=2, dept=null]
DEBUG 03-02 13:20:55,283 Cache Hit Ratio [com.gjhqq.mybatis_inf.EmployeeMapper]: 0.0 (LoggingCache.java:62)
DEBUG 03-02 13:20:55,284 ==> Preparing: select * from tbl_employee where id = ? (BaseJdbcLogger.java:145)
DEBUG 03-02 13:20:55,284 ==> Parameters: 2(Integer) (BaseJdbcLogger.java:145)
DEBUG 03-02 13:20:55,285 <== Total: 1 (BaseJdbcLogger.java:145)
Employee [id=2, last_name=lisi, gender=1, email=hqq@gj.com, dept_id=2, dept=null]