1、一级缓存默认开启,作用域为sqlSession,缓存结构为hashMap,key为hashcode+statementId+sql语句,value为查询到java对象,在同一个sqlSession中,同一个sql语句,第一次查询会在数据库查询,然后将查询结果写入缓存,第二次会先从缓存中查找,如果查询到结果,会直接返回结果,查询效率较高,但命中率较低,主要是因为在进行增删改操作时会清空sqlSession中的缓存信息。
2、二级缓存默认不开启,可以通过cacheEnabled设置为true开启,属于表级别(namesapce)缓存,多个缓存空间独立,多个sqlSession共享同一个namespace;
注意事项:
1、二级缓存慎重开启,多表联合查询时可能会产生脏读;
详情参考:传送门