一级缓存
mybatis默认开启一级缓存,生命周期为一次数据库会话,也就是同一个sqlSession
1. 同一个sqlSession,mybatis会将执行方法和参数通过算法生成一个key,sql返回结果作为value,保存起来,当再一个请求有相同的方法和参数时,就不执行数据库查询,而是从缓存中获取。
2. 一级缓存不同的sqlSession之间是隔离的,二级缓存不隔离
3. 通一个sqlSession可以通过配置在查之前清空缓存,例如在mapping.xml中设置 flushCache=“true”
4. 任何对于数据库的insert、update、delete都会清除缓存
二级缓存
二级缓存存在于SqlSessionFactory中, 生命周期为整个应用程序,也就是说应用程序不销毁,二级缓存一直存在。
开启二级缓存的条件:
1. 总开关:在mybatis.xml全局配置中增加<setting name="cacheEnabled" value="true"/>
2. 分开关:在具体的mapping.xml中增加<cache/>,或者在dao层上增加注解@Cachenamespace
3. 对应实体类开启序列化 implements Serializable
什么情况下下需要可以考虑开启缓存:查询多,其他操作(增删改)少的时候。
参考:https://blog.csdn.net/weixin_37139197/article/details/82908377