mybatis一级缓存和二级缓存的区别?
mybatis一级缓存和二级缓存?
-
一级缓存(本地缓存)
1.mybatis一级缓存是SqlSession级别的缓存, 2.在操作数据库的时候需要构造sqlsession对象,在对象中有一个数据结构(HashMap)用于存储数据。 3.不同的Sqlsession之间的缓存数据区域是互相不影响的,是独立的 4.一级缓存是框架默认为我们开启的,我们不需要做任何配置
//key:statementId和sql语句 //value:查询结果
例图:
-
二级缓存(全局缓存)
二级缓存是mapper级别的缓存,多个Sqlsession去操作一个mapper.xml语句,多个sqlseesion共用一个二级缓存,
//key:hashCode + statementId + SQL语句 //value:查询结果
开启二级缓存步骤:
-
1.先在mybatis的配置文件中加入:
<setting> <!-- 开启二级缓存 --> <setting name="cacheEnabled" value="true" /> </setting>
-
2.在对应的mapper.xml文件中加入cache标签
<cache />
-
3.让使用二级缓存的entity类实现Serializable接口