Mybatis缓存机制小结

    科技2025-11-03  9

    一级缓存 一级缓存默认开启,作用域是同一个SqlSession对象;只要在数据库中查到了结果,mybatis就会把查到的结果放入一级缓存;当执行update类型的语句时,进行了commit()操作,一级缓存就会被刷新; 二级缓存 二级缓存需要手动开启,在需要使用二级缓存的xml映射文件中添加一个 </cache>

    还需要再xml配置文件中开启

    <settings> <setting name="cacheEnabled" value="true"/> </settings>

    并且对于需要提交到二级缓存的JavaBean,需要实现Serializable接口

    二级缓存的作用域是同一个SqlSessionFactory产生的SqlSession,对同一个namespace下的查询语句 注意:不同的SqlSessionFactory只能由不同的流对象构造,因为流对象使用一次后就会被关闭开启二级缓存之后,如果某个sql语句不需要使用二级缓存,则在select标签内声明usecache=false即可 <select id="..." resultType="..." usecache="false"> ... <select/> flushCache将其设置为 true 后,只要语句被调用,都会导致本地缓存和二级缓存被清空,默认值:false。useCache将其设置为 true 后,将会导致本条语句的结果被二级缓存缓存起来,默认值:对 select 元素为 true。

    数据不是一查出来就提交到二级缓存,提交的时机是当前SqlSession对象调用了close()方法之后提交,刷新的时机是调用commit

    Processed: 0.009, SQL: 8