11月7日 mybatis缓存

mybatis的缓存

缓存的条件:必须要有存在的数据

一级缓存: SqlSession级别缓存.存储的数据.只能在同一个SalSession有效.默认开启

二级缓存: SqlSessionFactory级别的缓存. SqlSessionFactory只有一个的,单例,全局共享的,不同的 SqlSession共享,默认没有开启的,需要配置

实际使用中,我们很少用一级缓存

开机的步骤

1.在mybatis的全局配置文件中标签设置,默认已经开启缓存

2.在需要使用二级缓存的mapper映射文件中开启

面试():

mybatis默认使用的二级缓存是自带的HashMap,其中type:自定义缓存类型

1.编写一个类实现Cache接口 重写方法

2.在Mapper映射文件中的

常用的第三方映射文件:EhCache

3.对使用二级缓存的实体类,实现序列化接口

接口 实现类

11月7日 mybatis缓存_第1张图片

11月7日 mybatis缓存_第2张图片

11月7日 mybatis缓存_第3张图片

缓存作用

提高查询效率 降低服务器压力

如果执行增删改操作,则是先清空缓存,所有缓存数据都删除,淡然你可以对单个select进行使用二级缓存,使用useCache属性设置

//修改一下 user.setName(""王二麻子"); userMapper.update(user);//修改数据库的数据,但是缓存中的数据没有更改。

11月7日 mybatis缓存_第4张图片

缓存拿数据顺序

Mybatis源码追踪

11月7日 mybatis缓存_第5张图片

11月7日 mybatis缓存_第6张图片

11月7日 mybatis缓存_第7张图片

CachingExecutor执行二级缓存的方法

11月7日 mybatis缓存_第8张图片

11月7日 mybatis缓存_第9张图片

11月7日 mybatis缓存_第10张图片

11月7日 mybatis缓存_第11张图片

跟踪顺序:二级缓存 一级缓存 再到数据库中跟踪数据(重要)

你可能感兴趣的:(mybatis,缓存)