mybatis緩存問題導致無法查詢到數據


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

查看控制台信息,只有紅色框選部分有進行查詢數據,而其他沒有。然而上圖可看出有兩條數據是能展現出來的,故有可能是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屬性在該情況下沒有。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM