創(chuàng)建兩個SqlSession续镇,獲取兩個mapper后镀裤,先后調(diào)用同一個方法執(zhí)行同一條SQL,查看日志中輸出SQL語句執(zhí)行的次數(shù)僚害,會發(fā)現(xiàn)兩條SQL執(zhí)行
對于不同的SqlSession對象硫椰,緩存是不能共享的,為了讓SqlSession對象之間能夠共享相同的緩存,有時需要開啟二級緩存
實(shí)現(xiàn)二級緩存
要求POJO是一個可序列化的對象最爬,必須實(shí)現(xiàn)java.io.Serializable接口
映射文件上加入<cache/>
加入cache后涉馁,mybatis就會對命名空間下所有的select元素SQL查詢結(jié)果進(jìn)行緩存,而其中的insert爱致,delete烤送,update語句在操作時會刷新緩存。
<select flushCache="false" useCache="true"/>
<insert ?flushCache="ture" />
<update flushCache="ture"/>
<delete flushCache="ture"/>
以上是默認(rèn)配置糠悯,可以根據(jù)需要自行修改帮坚,flushCache屬性,對于四個都有效互艾,表示執(zhí)行后是否刷新緩存试和,useCache屬性則是select特有的,代表是否需要使用緩存
引用其他的映射緩存
<cache-ref ?namespace="com.xu.mapper.xxxxMapper">