和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关联映射进行深入学习,包括MyBatis缓存机制、配置文件、映射文件的使用。 本文可以归类为MyBatis框架的学习教程,其核心主题是带领读者深入掌握MyBatis的配置与使用。 包含文件: 1.项目所需的所有架包...
内容概要包括了MyBatis的基本概念、配置、映射文件、动态SQL、缓存机制等方面的知识点,以及对MyBatis的常见问题和解决方案的解释。 适用人群主要是即将参加面试的软件开发人员,特别是那些使用MyBatis作为持久层...
供了丰富的示例,通过自下而上的方法使读者更好地理解和掌握 MyBatis 的高级用法,同时针对 MyBatis 的代码生成器提供了详细的配置介绍。此外,本书还提供了缓存配置、插件开发、 Spring Spring Boot 成的详细内容...
针对MyBatis高级映射、存储过程和类型处理器提供了丰富的示例,通过自下而上的方法使读者更好地理解和掌握MyBatis的高级用法,同时针对MyBatis的代码生成器提供了详细的配置介绍。此外,本书还提供了缓存配置、插件...
与一级缓存相比,二级缓存范围更大了一些,可以被多个SqlSession所共用。下面通过本文带领大家一起学习mybatis二级缓存知识,一起看看吧
针对 MyBatis 高级映射、存储过程和类型处理器提供了丰富的示例,通过自下而上的方法使读者更好地理解和掌握MyBatis 的高级用法,同时针对 MyBatis 的代码生成器提供了详细的配置介绍。此外,本书还提供了缓存配置、...
客户端向数据库服务器发送同样的sql查询语句,如果每次都去访问数据库,会导致性能的降低,那么怎么提高呢?下面小编给大家分享下mybatis为我们提供了一级缓存的策略
在大学期间学习Mybatis做的笔记,共有11个word,对应每个章节,从简介到缓存机制,条理清晰,重点我自己都用彩字标注。能够有效帮助初学者快速理解和掌握Mybatis。内置完整学习pdf。
针对 MyBatis 高级映射、存储过程和类型处理器提供了丰富的示例,通过自下而上的方法使读者更好地理解和掌握MyBatis 的高级用法,同时针对 MyBatis 的代码生成器提供了详细的配置介绍。此外,本书还提供了缓存配置、...
就自己写写,加深对自己的理解,希望还能帮到其他人!
本人提供这个Shiro + SpringMvc + Mybatis + Redis 的Demo 本着学习的态度,如果有欠缺和不足的地方,给予指正,并且多多包涵。 “去其糟粕取其精华”。如果觉得写的好的地方就给个赞,写的不好的地方,也请多多包涵...
本项目是基于SpringMVC和Mybatis...系统采用了SpringMVC、Mybatis、mybatis-plus等技术,实现了分布式系统功能,包括Redis缓存、Shiro权限管理、Quartz分布式集群调度等。项目结构清晰,代码可读性强,易于理解和维护。
该文档主要整理的是SSM的常见面试题,包括一下内容: 1. SpringMVC 的工作原理 (11步) 2. 谈谈你对SpringMVC的...19. mybatis的缓存机制,一级,二级介绍一下。 20. 视图解析器本质是什么 21. 统一解决get乱码
基于SpringBoot+SpringMVC,+... 通过对网络吞吐量(TPS)进行直观的表现服务器对于并发量得性能提升,使用Redis技术、多级Cache缓存技术等技术对后端进行了优化,使得服务器并发处理的性能得到了几倍得性能提升。
熟练使用sqlserver和mysql和oracle等数据库及sql使用及优化。 熟练使用webservice接口发布及编程。 熟练使用liunx命令,了解liunx服务器配置及sftp的搭建。 熟悉使用jquery,javascript,css,html的前端技术,了解使用...
,使用技术:spring 、springmvc、mybatis、maven、html5、jquery、freemarker、Redis(缓存服务器)、Solr(搜索引擎)、Dubbo(调用系统服务)、Nginx(web服务器)、FastDFS 毕业设计是高等教育阶段学生在完成...