Erlo

MyBatis整合第三方缓存EHCache

2024-02-04 13:29:17 发布   79 浏览  
页面报错/反馈
收藏 点赞

EHCache缓存针对于MyBatis的二级缓存。
MyBatis默认二级缓存是SqlSessionFactory级别的。

添加依赖



	org.mybatis.caches
	mybatis-ehcache
	1.2.1
	
	
		
			org.slf4j
			slf4j-api
		
	



	ch.qos.logback
	logback-classic
	1.4.11
	test

创建EHCache的配置文件ehcache.xml

配置文件名必须为ehcache.xml



    
    
    
    
    

EHCache配置文件的配置项说明

image

创建logback日志文件

使用SLF4J日志时,log4j日志文件会失效,需要配置SLF4J的具体实现logback来打印日志。
创建logback的配置文件logback.xml



    
    
        
        
        
        [%d{HH:mm:ss.SSS}] [%-5level] [%thread] [%logger]
        [%msg]%n
        
    
    
    
    
    
        
    
    
    

mapper.xml设置二级缓存的类型



测试

public class CacheTest {

    private static final Logger LOGGER = LoggerFactory.getLogger(CacheTest.class);

    @Test
    public void test2() {
        try {
            //读取MyBatis核心配置文件中的信息
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            //通过SqlSessionFactory创建SqlSession对象
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

            SqlSession sqlSession1 = sqlSessionFactory.openSession(true);
            SqlSession sqlSession2 = sqlSessionFactory.openSession(true);

            CacheMapper mapper1 = sqlSession1.getMapper(CacheMapper.class);
            List emps1 = mapper1.getEmpByDeptId(1);
            emps1.forEach(System.out::println);
            //关闭sqlSession的时候才会把保存在一级缓存中的数据保存到二级缓存中
            sqlSession1.close();

            CacheMapper mapper2 = sqlSession2.getMapper(CacheMapper.class);
            List emps2 = mapper2.getEmpByDeptId(1);
            emps2.forEach(System.out::println);
            //关闭sqlSession的时候才会把保存在一级缓存中的数据保存到二级缓存中
            sqlSession2.close();
        } catch (IOException e) {
            LOGGER.error("测试方法:test2异常:{0}",e);
        }
    }
}

输出结果:
image

登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认