`

mybatis缓存的使用及理解

    博客分类:
  • ORM
阅读更多

和hibernate一样,mybatis也有缓存机制 
一级缓存是基于 PerpetualCache(mybatis自带)的 HashMap 本地缓存,作用范围为session,所以当session commit或close后,缓存就会被清空 

二级缓存默认也是基于 PerpetualCache,但是可以为其制定存储源,比如ehcache 

一级缓存缓存的是SQL语句,而二级缓存缓存的是结果对象,看如下例子(mybatis的日志级别设为debug)

1 List<User> users = sqlSession.selectList("com.my.mapper.UserMapper.getUser""jack");
2 System.out.println(users);
3   
4 //sqlSession.commit();①
5  
6   
7 List<User> users2 = sqlSession.selectList("com.my.mapper.UserMapper.getUser""jack");//②admin
8 System.out.println(users);

结果是只发起一次SQL语句,如果我们把②出的参数jack改为admin,发现还是只发起一次SQL语句,但是会设置不同参数

如果把①处去掉注释,会发现不会有缓存了

 

下面就来启用二级缓存

在配置文件中启用二级缓存

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

在需要进行缓存的mapper文件UserMapper.xml中加上

1 <cache readOnly="true"></cache>

注意这里的readOnly设为true,默认是false,表示结果集对象需要被序列化

 

我们打开①处注释,②处仍然使用jack,我们发现结果只执行了一次SQL语句

但是如果把②处改为admin,执行了2次SQL语句,这说明二级缓存是缓存结果集对象的

 

下面我们来使用ehcache

在classpath下添加ehcache.xml

在UserMapper.xml中添加:

1 <!-- <cache readOnly="true" type="org.mybatis.caches.ehcache.LoggingEhcache"/>   -->
2 <cache type="org.mybatis.caches.ehcache.EhcacheCache"/>

用上面那个会输出更加详细的日志,下面的不会

需要用到ehcache.jar,下载地址:http://sourceforge.net/projects/ehcache/files/ehcache/ehcache-2.7.0/ehcache-2.7.0-distribution.tar.gz/download

mybatis-ehcache.jar下载地址:http://code.google.com/p/mybatis/downloads/detail?name=mybatis-ehcache-1.0.2-SNAPSHOT-bundle.zip&can=3&q=Product%3DCache

 

分享到:
评论

相关推荐

    深入理解MyBatis中的一级缓存与二级缓存

    主要给大家深入的介绍了关于MyBatis中一级缓存与二级缓存的相关资料,文中详细介绍MyBatis中一级缓存与二级缓存的工作原理及使用,对大家具有一定的参考性学习价值,需要的朋友们下面来一起看看吧。

    SSM框架的学习与应用-Java EE企业级应用开发学习记录(第四天)Mybatis的关联映射和缓存机制

    深度对MyBatis关联映射进行深入学习,包括MyBatis缓存机制、配置文件、映射文件的使用。 本文可以归类为MyBatis框架的学习教程,其核心主题是带领读者深入掌握MyBatis的配置与使用。 包含文件: 1.项目所需的所有架包...

    面试题-全网最新的MyBatis面试题及答案

    内容概要包括了MyBatis的基本概念、配置、映射文件、动态SQL、缓存机制等方面的知识点,以及对MyBatis的常见问题和解决方案的解释。 适用人群主要是即将参加面试的软件开发人员,特别是那些使用MyBatis作为持久层...

    Mybatis.PDF

    供了丰富的示例,通过自下而上的方法使读者更好地理解和掌握 MyBatis 的高级用法,同时针对 MyBatis 的代码生成器提供了详细的配置介绍。此外,本书还提供了缓存配置、插件开发、 Spring Spring Boot 成的详细内容...

    MyBatis从入门到精通__刘增辉电子工业出版社

    针对MyBatis高级映射、存储过程和类型处理器提供了丰富的示例,通过自下而上的方法使读者更好地理解和掌握MyBatis的高级用法,同时针对MyBatis的代码生成器提供了详细的配置介绍。此外,本书还提供了缓存配置、插件...

    深入理解Mybatis二级缓存

    与一级缓存相比,二级缓存范围更大了一些,可以被多个SqlSession所共用。下面通过本文带领大家一起学习mybatis二级缓存知识,一起看看吧

    MyBatis 从入门到精通

    针对 MyBatis 高级映射、存储过程和类型处理器提供了丰富的示例,通过自下而上的方法使读者更好地理解和掌握MyBatis 的高级用法,同时针对 MyBatis 的代码生成器提供了详细的配置介绍。此外,本书还提供了缓存配置、...

    深入理解Mybatis一级缓存

    客户端向数据库服务器发送同样的sql查询语句,如果每次都去访问数据库,会导致性能的降低,那么怎么提高呢?下面小编给大家分享下mybatis为我们提供了一级缓存的策略

    Mybatis学习笔记

    在大学期间学习Mybatis做的笔记,共有11个word,对应每个章节,从简介到缓存机制,条理清晰,重点我自己都用彩字标注。能够有效帮助初学者快速理解和掌握Mybatis。内置完整学习pdf。

    《MyBatis 从入门到精通》源代码

    针对 MyBatis 高级映射、存储过程和类型处理器提供了丰富的示例,通过自下而上的方法使读者更好地理解和掌握MyBatis 的高级用法,同时针对 MyBatis 的代码生成器提供了详细的配置介绍。此外,本书还提供了缓存配置、...

    mybatis2020.zip

    就自己写写,加深对自己的理解,希望还能帮到其他人!

    SpringMVC-Mybatis-Shiro-redis-master 权限集成缓存中实例

    本人提供这个Shiro + SpringMvc + Mybatis + Redis 的Demo 本着学习的态度,如果有欠缺和不足的地方,给予指正,并且多多包涵。 “去其糟粕取其精华”。如果觉得写的好的地方就给个赞,写的不好的地方,也请多多包涵...

    基于SpringMVC和Mybatis的iBase4J分布式系统设计源码

    本项目是基于SpringMVC和Mybatis...系统采用了SpringMVC、Mybatis、mybatis-plus等技术,实现了分布式系统功能,包括Redis缓存、Shiro权限管理、Quartz分布式集群调度等。项目结构清晰,代码可读性强,易于理解和维护。

    SSM 梳理 面试题整理

    该文档主要整理的是SSM的常见面试题,包括一下内容: 1. SpringMVC 的工作原理 (11步) 2. 谈谈你对SpringMVC的...19. mybatis的缓存机制,一级,二级介绍一下。 20. 视图解析器本质是什么 21. 统一解决get乱码

    基于SpringBoot+SpringMVC,+Mybatis的电商秒杀购物项目源码.zip

    基于SpringBoot+SpringMVC,+... 通过对网络吞吐量(TPS)进行直观的表现服务器对于并发量得性能提升,使用Redis技术、多级Cache缓存技术等技术对后端进行了优化,使得服务器并发处理的性能得到了几倍得性能提升。

    JAVA开发工程师简历

    熟练使用sqlserver和mysql和oracle等数据库及sql使用及优化。 熟练使用webservice接口发布及编程。 熟练使用liunx命令,了解liunx服务器配置及sftp的搭建。 熟悉使用jquery,javascript,css,html的前端技术,了解使用...

    spring 、springmvc、mybatis分布式多店铺电商系统.zip

    ,使用技术:spring 、springmvc、mybatis、maven、html5、jquery、freemarker、Redis(缓存服务器)、Solr(搜索引擎)、Dubbo(调用系统服务)、Nginx(web服务器)、FastDFS 毕业设计是高等教育阶段学生在完成...

Global site tag (gtag.js) - Google Analytics