SSM(五)Mybatis配置缓存
1.在没有配置的情况下,mybatis默认开启一级缓存。
Object object=mapper.getXxx(object);
Object object2=mapper.getXxx(object);
打个断点测试一下就知道了。

在同一个SqlSession中,第一次查询后,调用mapper相同方法,SqlSession会从一级缓存中取数据,而且得到的是相同的对象。不会发送SQL。
如果SqlSession进行了提交,那么一级缓存将会清除。
public void test(){
SqlSession session = MyBatisUtil.getSession();
IUserDAO mapper = session.getMapper(IUserDAO.class);
UserOneToMany user = new UserOneToMany();
user.setUsercode("zhangsan");
UserOneToMany userOneToMany = mapper.getUserOneToManyBills(user);
System.out.println("======"+userOneToMany);
session.commit();
UserOneToMany userOneToMany2 = mapper.getUserOneToManyBills(user);
System.out.println("======"+userOneToMany2);
session.close();
}
打印结果不同,且发送了两次SQL,获得了两个不同的对象:

2.MyBatis开启二级缓存第一步:大配置中settings节点加入:<setting name="cacheEnabled" value="true"/>

第二步:命名空间加入节点:<cache/>

这里<cache/>节点可以设置得更详细些,比如:
<cache eviction="LRU" flushInterval="100000" size="1024" readOnly="true"/>
其中eviction代表回收策略(LRU|FIFO|SOFT|WEAK);flushInterval代表刷新间隔时间,单位是毫秒;size是引用数目,就是缓存中可以存放多少个对象;readOnly只读,缓存只能读取不能修改。
简单说明下四个回收策略:
1.LRU(默认):最近最少使用,移除最长时间不用的对象。
2.FIFO:先进先出,按对象进入缓存的顺序移除它们。
3.SOFT:软引用,移除基于垃圾回收器状态和软引用规则的对象。
4.WEAK:弱引用,移除基于垃圾回收器状态和弱引用规则的对象。
第三步:相应实体类实现Serializable接口


测试方法不变,观察结果:

首先,程序只发送了一次SQL。其次,第二次取到的数据是从缓存中获得的,同样获取的是两个不同的对象。

SSM(五)Mybatis配置缓存的更多相关文章
- ssm整合——Mybatis配置(1)
mybatis搭建-基于注解 1. 环境准备 1.1 新建maven的webapp项目 1.2 新建必要的目录和文件 1.3 文件配置 pom.xml junit默认创建是4.11,手动改成4.12 ...
- SpringBoot五步配置Mybatis
第一步:Maven里面添加mybatis的引用jar包: <!--mybatis--> <dependency> <groupId>org.mybatis.spri ...
- SSM框架的配置Spring+Springmvc +Mybatis
ssm框架是由spring mvc +spring+mybatis组成 快速阅读 通过spring的配置文件spring.xml,在servlet中指定spring mvc的配置文件spring-mv ...
- MyBatis二级缓存配置
正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 Mybatis二级缓存是SessionFactory,如果两次查询基于同一个SessionFactory,那么就从二级缓存 ...
- mybatis深入理解(五)-----MyBatis的一级缓存实现详解 及使用注意事项
0.写在前面 MyBatis是一个简单,小巧但功能非常强大的ORM开源框架,它的功能强大也体现在它的缓存机制上.MyBatis提供了一级缓存.二级缓存 这两个缓存机制,能够很好地处理和维护缓存,以提高 ...
- Mybatis配置
首先导入mybatis-3.2.3.jar包 还有连接数据库的驱动包 工程中必须导入的三个包(对应的包附件中可以下载): mybatis-3.2.3.jar sqljdbc.jar log ...
- 【MyBatis源码解析】MyBatis一二级缓存
MyBatis缓存 我们知道,频繁的数据库操作是非常耗费性能的(主要是因为对于DB而言,数据是持久化在磁盘中的,因此查询操作需要通过IO,IO操作速度相比内存操作速度慢了好几个量级),尤其是对于一些相 ...
- Mybatis的缓存
1.缓存是什么 在 Mybatis 里面,所谓的缓存就是将已经查询过的记录放在内存的缓冲区或文件上,这样如果再次查询,可以通过配置的策略,命中已经查询过的记录,从而提高查询的效率. Mybatis 的 ...
- SpringBoot 下 mybatis 的缓存
背景: 说起 mybatis,作为 Java 程序员应该是无人不知,它是常用的数据库访问框架.与 Spring 和 Struts 组成了 Java Web 开发的三剑客--- SSM.当然随着 Spr ...
随机推荐
- 七easy网络陷阱上当
网络犯罪可能开始与你或你的家人,因为无论出现什么样的警告信息,或异常体征,你还是做你通常做在互联网上,网络犯罪已经发生不知道.趋势科技收集了你所该避免的七种最常见的网络犯罪陷阱.让你和家人避免成为它们 ...
- python实现身份证校验位计算
身份证校验码的计算方法 1.将前面的身份证号码17位数分别乘以不同的系数.第i位对应的数为[2^(18-i)]mod11.从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 ...
- python短信轰炸机版本smsbomb----------部分(post)
用一些用手机号注冊且须要发送验证码的站点的漏洞.能够向不论什么人的手机号发送短信,当然短信内容,我们无法控制.所以主要工作还是寻找这种站点.然后利用Fiddler或者HttpWatch分析请求.使用p ...
- 嵌入式Linux开发环境的搭建
一个.制造u-boot.bin文件: tar xjf u-boot-1.1.6.tar.bz2 cd u-boot-1.1.6 patch -p1 < ../u-boot-1. ...
- WPF 设置类库项目为启动项,设置窗体跟随。
原文:WPF 设置类库项目为启动项,设置窗体跟随. 1.添加用于启动的类Program.cs,需要一个静态的Main函数入口. using System; using System.Windows; ...
- HDU - 2294 Pendant (DP滚动数组降维+矩阵高速功率)
Description On Saint Valentine's Day, Alex imagined to present a special pendant to his girl friend ...
- XF 键盘类型设置
键盘类型: default Chat-输入短信或表情 Email Numeric Telephone Url-输入网址和文件路径 其他额外选项: CapitalizeSentence SpellChe ...
- delphi的拖拽功能实现
惭愧,编了这么多年程序,还没用过拖拽功能 这次同事要实现图标互换的功能,让我帮忙看一下,于是趁机研究了一下拖拽事件,发现还是比较简单的 参考了http://topic.csdn.net/u/20081 ...
- 【wpf】在win10系统上弹出toast和notification
原文:[wpf]在win10系统上弹出toast和notification 老规矩,先看效果 右下角的notification: 操作中心的notification: 整体效果: 前提条件 1.需要在 ...
- C#图片保存与读取,以及图片另存
照片的保存与读取 /// <summary> /// 图片转二进制 /// </summary> /// <param name="imgPhoto" ...