学习目标:
- 理解什么是立即加载,什么是延迟加载
- 理解缓存的概念,掌握使用缓存的关键技术
- 熟练使用注解开发
学习内容:
一、MyBatis的延迟加载
1、什么是延迟加载
- 使用数据才查询,不用不查询,按需加载(懒加载)
- 一对多,多对多
2、什么是立即加载
二、mybatis的缓存
1、什么是缓存
2、为什么使用缓存
3、什么样的数据使用缓存,什么样的数据不能使用
- 适用于缓存
- 经常查询并且不经常修改
- 数据的正确与否对最终结果影响不大
- 不适用于缓存
- 经常改变的数据
- 数据的正确与否对最终结果影响很大,商品库存、银行汇率
4、MyBatis中的一级缓存和二级缓存
- 一级缓存:
- MyBatis中的SqlSession对象的缓存
- 执行查询后,结果存入sqlSession对象提供的区域中
- 该区域的结构是map,再次查询时会首先去sqlSession中查找,如果存在直接使用
- sqlSession关闭,一级缓存同时消失
- 清空一级缓存:调用sqlSession的修改,添加,删除,commit,close,clearCache
- 二级缓存
- 指SqlSessionFactory对象的缓存,有同一个SqlSessionFactory对象创建的SqlSession对象共享其缓存
- 二级缓存的使用步骤
- 让MyBatis框架支持二级缓存(在SqlMapConfig.xml中配置)
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
- 让当前的映射文件支持二级缓存(在UserDao.xml中配置)
<cache/>
- 在当前的操作支持二级缓存(在select标签中配置)
<select id="findAll" resultMap="userAccountMap" useCache="true">
SELECT * FROM USER
</select>
三、MyBatis的注解开发
1、环境搭建
2、单表CRUD操作(代理DAO方式)
3、多表查询操作
4、缓存的配置
学习产出: