###今天查詢記錄時,發現重複查詢結果時出現空記錄的狀況 web
###查看控制檯信息,只有紅色框選部分有進行查詢數據,而其餘沒有。然而上圖可看出有兩條數據是能展示出來的,故有多是mybatis緩存命中的。 緩存
###所以在mapper文件中加入flushCache="true" useCache="false"mybatis
<select id="querySuppliers" flushCache="true" useCache="false" resultType="cn.com.ebidding.web.yzPurchaseMain.dao.model.QueryYzResultModel"> select t1.id id,t2.company_name name from lib_suppliers t1, sys_company t2 where t1.is_deleted = '0' and t2.is_deleted = '0' and t1.company_id = t2.id and t1.agent_id = #{agentId} and t1.id in <foreach item="item" index="index" collection="ids" open="(" separator="," close=")"> #{item} </foreach> </select>
###問題解決 app
<font color=red size=12>總結:</font> ####(1) 當爲select語句時:3d
-
flushCache默認爲false,表示任什麼時候候語句被調用,都不會去清空本地緩存和二級緩存。code
-
useCache默認爲true,表示會將本條語句的結果進行二級緩存。blog
####(2) 當爲insert、update、delete語句時:it
-
flushCache默認爲true,表示任什麼時候候語句被調用,都會致使本地緩存和二級緩存被清空。io
-
useCache屬性在該狀況下沒有。class