# 本篇文章主要是为了帮助自己总结和加深理解,若能帮助到其他小伙伴也是极好的
基本介绍
Mybatis中支持一级缓存和二级缓存,一级缓存是默认开启的并且不能关闭,二级缓存默认关闭,可根据需要进行手动开启,总体来说Mybatis的一二级缓存的最终目的就是为了帮助数据库减轻压力,保证高效高速的查询,提高数据库的瓶颈。
一级缓存
一级缓存是基于hashmap的本地缓存,作用域只在session中,当session刷新或关闭后,这个session中所有的cache就会被清空。
注意 如果使用clearCache以及增、删、改的sql进行操作会导致select缓存被清空。
命中原则
mybatis是怎样判断两次select语句是完全相同的查询sql?
1、statementId
statementId其实就是select语句标签中的的id,如果两条select的id不同,那么必定不会命中。
例如图中代码,这是两条相同的select查询语句,先使用getByName01进行查询,再使用getByName02以及相同的参数进行查询,仍然不会进入缓存。
<select id="getByName01">
SELECT * FROM `user` WHERE na