今天查詢記錄時,發現重復查詢結果時出現空記錄的情況

查看控制台信息,只有紅色框選部分有進行查詢數據,而其他沒有。然而上圖可看出有兩條數據是能展現出來的,故有可能是mybatis緩存命中的。

因此在mapper文件中加入flushCache="true" useCache="false"
<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>
問題解決

總結:
(1) 當為select語句時:
-
flushCache默認為false,表示任何時候語句被調用,都不會去清空本地緩存和二級緩存。
-
useCache默認為true,表示會將本條語句的結果進行二級緩存。
(2) 當為insert、update、delete語句時:
-
flushCache默認為true,表示任何時候語句被調用,都會導致本地緩存和二級緩存被清空。
-
useCache屬性在該情況下沒有。
