Mybatis高级特性学习(三)
来源:互联网 发布:量化程序员 招聘 编辑:程序博客网 时间:2024/05/21 09:01
主要内容:缓存、缓存测试和缓存应用
1. 什么是查询缓存
Mybatis提供查询缓存,提高查询效率,降低数据库压力
Mybatis缓存分为一级缓存、二级缓存
一级缓存:
在操作数据库时,需要构造SqlSession对象,在对象中有一块内存区域:hashMap,用于存储缓存数据。
注:不同sqlsession之间的缓存区域是互不影响的
二级缓存:
mapper级别的缓存,多个sqlSession去操作同一个mapper的SQL语句,多个sqlSession去操作数据库得到的数据库会存储在二级缓存区域。二级缓存是跨session的。
2. 一级缓存
Mybatis默认支持一级缓存,不需要配置。
@Testpublic void findUserByCache() {SqlSession sqlSession = sqlSessionFactory.openSession();UserMapper userMapper = sqlSession.getMapper(UserMapper.class);//第一次发起请求,查看是否发出sqlUser user1 = userMapper.findUserById(1);System.out.println(user1);//第二次发起请求,查看是否发出sqlUser user2 = userMapper.findUserById(1);System.out.println(user2);sqlSession.close();}
3. 二级缓存
mapper的二级缓存区域是按照namespace区分的。每一个namespace的mapper有一个二级缓存区域。
开启二级缓存:
1)SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓存。
<settings><!-- 打开延迟加载的开关 --><setting name="lazyLoadingEnabled" value="true"></setting><!-- 将积极加载改为消极加载 按需加载 --><setting name="aggressiveLazyLoading" value="false"></setting><!-- 开启二级缓存 --><setting name="cacheEnabled" value="true"></setting></settings>
<!-- 开启本Mapper的namespace下的二级缓存 --><cache></cache>2) POJO实现序列化接口,为了将缓存数据取出执行反序列化操作。因为二级缓存的存储介质不一定是内存
public class User implements Serializable {/** * */private static final long serialVersionUID = 4504125303107628364L;参数设置:
禁用二级缓存:useCache="false" 例:<select id=".." resultMap=".." useCache="false"></select>
刷新缓存:flushCache="true" <insert id="..." parameterType=".." flushCache="true"></insert>
0 0
- Mybatis高级特性学习(三)
- Mybatis高级特性学习(一)
- Mybatis高级特性学习(二)
- python学习笔记(三) - 高级特性
- python学习(三):高级特性
- Python学习笔记(三)高级特性
- Python学习 (三 高级特性)
- Python学习笔记(三)--高级特性
- Python学习笔记(三):高级特性
- CSS(三) 高级特性
- 三.Mybatis高级查询
- 廖雪峰Python教程学习笔记三-高级特性
- Mybatis框架学习(三)—高级映射,延迟加载
- Python学习----高级特性
- Python学习-高级特性
- logback高级特性使用(三)
- logback高级特性使用(三)
- JS高级特性(三)
- java JVM学习
- Cocoa Touch框架
- Java编写网络爬虫
- 冒泡
- android clipPath切割画布
- Mybatis高级特性学习(三)
- 2.9 初始化进程0
- Linux strace命令
- 敏捷开发与敏捷测试
- Android 如何在Eclipse中查看Android API源码 及 support包源码
- 白话空间统计十九:热点分析(上)
- 二十三种设计模式之行为型模式之解释器模式
- 软件缺陷的严重性和优先级
- 模板类中重载<<和>>操作符