创建两个SqlSession,获取两个mapper后,先后调用同一个方法执行同一条SQL,查看日志中输出SQL语句执行的次数,会发现两条SQL执行
对于不同的SqlSession对象,缓存是不能共享的,为了让SqlSession对象之间能够共享相同的缓存,有时需要开启二级缓存
实现二级缓存
要求POJO是一个可序列化的对象,必须实现java.io.Serializable接口
映射文件上加入<cache/>
加入cache后,mybatis就会对命名空间下所有的select元素SQL查询结果进行缓存,而其中的insert,delete,update语句在操作时会刷新缓存。
<select flushCache="false" useCache="true"/>
<insert flushCache="ture" />
<update flushCache="ture"/>
<delete flushCache="ture"/>
以上是默认配置,可以根据需要自行修改,flushCache属性,对于四个都有效,表示执行后是否刷新缓存,useCache属性则是select特有的,代表是否需要使用缓存
引用其他的映射缓存
<cache-ref namespace="com.xu.mapper.xxxxMapper">
网友评论