SSM(五)Mybatis配置缓存
2024-08-31 23:38:17
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。其次,第二次取到的数据是从缓存中获得的,同样获取的是两个不同的对象。
最新文章
- 解决 LINUX mysql不能通过IP连接 只能localhost 权限没问题情况下
- javascript - 简单实现一个图片延迟加载的jQuery插件
- FastDFS分布式文件系统安装与使用(单节点)
- Android:控件GridView的使用
- MySQL运行原理与基础架构
- Spark性能调优之代码方面的优化
- 牛客网Wannafly挑战赛25A 因子(数论 素因子分解)
- typescript里面调用javasript
- ls操作总结
- FXAA,FSAA与MSAA有什么区别?效果和性能上哪个好
- rest-framework 序列化格式Restful API设计规范
- 5、lvs使用进阶(01)
- redis初使用
- struts系列:校验(三)国际化
- JAVA基础知识要点
- 【HTTP header】【Access-Control-Allow-Credentials】跨域Ajax请求时是否带Cookie的设置
- NPOI创建Excel批注
- Github基本操作的学习与温习
- 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(三):设置上传文件夹权限(这里测试用完全共享)
- vue实现结账单基本方法
热门文章
- android4.4系统解决“ERRORcouldn&;#39;t find native method”方法
- Openstack+Kubernetes+Docker微服务
- WPF 3D 模型旋转
- VC中引用第三方库,常见的库冲突问题
- ASP.NET Core 中间件 - ASP.NET Core 基础教程 - 简单教程,简单编程
- JQuery在一个简单的表单验证的例子
- jquery模拟飞秋
- C++成员函数指针错误用法警示(成员函数指针与高性能的C++委托,三篇),附好多评论
- C#调用Microsoft.DirectX.DirectSound.dll时出错
- [Game-0001] 新手引导逻辑梳理