mybatis的缓存
缓存的条件:必须要有存在的数据
一级缓存: SqlSession级别缓存.存储的数据.只能在同一个SalSession有效.默认开启
二级缓存: SqlSessionFactory级别的缓存. SqlSessionFactory只有一个的,单例,全局共享的,不同的 SqlSession共享,默认没有开启的,需要配置
实际使用中,我们很少用一级缓存
开机的步骤
1.在mybatis的全局配置文件中<settings>标签设置,默认已经开启缓存
2.在需要使用二级缓存的mapper映射文件中开启
面试():
mybatis默认使用的二级缓存是自带的HashMap,其中type:自定义缓存类型
1.编写一个类实现Cache接口 重写方法
2.在Mapper映射文件中的<cache type="自定义的全限定名" />
常用的第三方映射文件:EhCache
3.对使用二级缓存的实体类,实现序列化接口
接口 实现类
缓存作用
提高查询效率 降低服务器压力
如果执行增删改操作,则是先清空缓存,所有缓存数据都删除,淡然你可以对单个select进行使用二级缓存,使用useCache属性设置
//修改一下 user.setName(""王二麻子"); userMapper.update(user);//修改数据库的数据,但是缓存中的数据没有更改。
缓存拿数据顺序
Mybatis源码追踪
CachingExecutor执行二级缓存的方法
跟踪顺序:二级缓存 一级缓存 再到数据库中跟踪数据(重要)