Mybatis一级缓存和二级缓存的区别

一级缓存
一级缓存是SqlSession对象的缓存,当调用SqlSession的修改,添加,删除,commit(),close()等方法时,就会清空一级缓存。
除此之外,我们可以调用SqlSession对象的方法clearCache(),手动清空一级缓存。
一级缓存存放的是对象。
SqlSession内部维护一个Map,当我们查询时,得到的pojo对象会存储在Map当中,以后每一次执行查询,都会先从Map中查找是否存在该查询的结果,如果存在则直接获取该pojo对象。
二级缓存
二级缓存是SqlSessionFactory对象的缓存。由同一个SqlSessionFactory对象创建的SqlSession共享其缓存。
二级缓存存放的是数据,不是对象。
二级缓存是默认关闭的。
二级缓存开启方法:
MybtaisConfig.xml:

<settings>
        <setting name="cacheEnabled" value="true"/>
settings>

XML文件:
在指定的mapper.xml中加上:

<cache/>

注解:
在mapper接口上标注@CacheNamespace(blocking = true)即可开启。

@CacheNamespace(blocking = true)
public interface UserMapper{
//
}

如有问题或错误请留言。

你可能感兴趣的:(数据库)