一级缓存(本地缓存)
1.一级缓存默认是开启的
2.一级缓存是SqlSession级别的缓存 也就是每一个SqlSession对象都有自己的一级缓存 并且互不共享
3.一级缓存的工作机制:同一个SqlSession对象 每次查询都要从自己的一级缓存中查询数据 如果有则直接获取 如果没有 则从数据库中获取 然后将查询到的数据放到一级缓存中 方便后续的查询使用
一级缓存失败的情况:不同的SqlSession对应不同的一级缓存 同一个SqlSession但是查询条件不同 同一个SqlSession两次查询期间执行了任何一次增删改操作 同一个SqlSession两次查询期间手动清空了缓存
二级缓存 (全局缓存)
1.默认开启 不能直接使用 还需要配置二级缓存
2.二级缓存是namespace级别的缓存 基于同一个namespace的多个sqlSession对象可以共享一个二级缓存
3.二级缓存的配置使用 :
在全局配置文件中配置 cacheEnabled=true 在要使用二级缓存的映射文件中 配置标签 与缓存相关的POJO 需要实现序列化接口
缓存的一些配置:
全局缓存配置文件中的cacheEnabled=true 如果改成flase 二级缓存不能使用 一级可以
每个标签都可以设置useCache=true 如果是flase 二级缓存不能使用 一级可以
每个增删改标签可以设置成flushCache=true 一二级缓存都会被刷新
seesion.clearCache():只会清空一级缓存
分页插件:
提前设置好分页相关的信息 在编写插件时 会制定好插件作用的对象 Executor