什么是缓存?缓存是内存中的一块临时区域用来优化查询速度。
Mybatis 可以借助缓存进行查询优化
一级缓存
SqlSession级别的缓存,它是程序自带的不可卸载(随着session的创建而创建, 随着session的关闭而销毁。
一级缓存存取数据的时机:
1、查询
①第一次查询:查询缓存,如果缓存中没有数据,查询数据库,并且将查询结果保存到一级缓存中
②第二次查询相同的数据:查询缓存,返回缓存中的内容
2、一级缓存
内部封装了一个Map<key,value>集合,Map集合封装到Sqlsession中
验证一级缓存:查询两次相同的内容
可以清空一级缓存sqlsession.close()、sqlsession.clearCache()。
二级缓存
SqlSessionFactory级别的缓存,随着SqlSessionFactory的创建而创建,随着SqlSessionFactory的关闭而销毁。
对于一个SqlSessionFactory而言,所有Sqlsession的查询结果都可以缓存到二级缓存中
使用规则:(只执行查询方法不会向二级缓存中存放数据)
1、实体类对象需要实现序列化接口
序列化接口:需要本地存储或者网络传输。
2、需要在核心配置文件中开启二级缓存
<setting name="cacheEnable" value= "true"/> (cacheEnable : true)
3、需要在mapper配置文件中开启使用二级缓存
<cache />
4、需要在缓存的sql语句配置中配置使用二级缓存
useCache=“true”
5、操作的过程中需要提交之后才会存入缓存中。
session.commit();
网友评论