ehcache跟分頁插件衝突問題解決

ehcache跟分頁插件衝突問題解決

         使用mybatis用ehcache做緩存的時候,發現了問題。因爲使用的是分頁插件,分頁插件會自動查詢總條數和對sql進行limit,這個時候如果加上ehcache時,就可能會發出查詢分頁集合信息的sql從緩存中取,但是分頁插件的查詢分頁總條數的sql並不會被執行,這樣就讓人不高興了,每次查詢出來的總條數沒有,就等於總頁數計算不正確,下面的不用我再說了,反正我是調試了個把小時才發現是這裏的問題;
好了,廢話不多說。直接上解決方案:
用mybatis大家都知道 

MyBatis的flushCache和useCache吧:

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

所以對於分頁查詢的語句,在mapper.xml中的select語句裏面配置 flushCache="true" 

	<select id="allEmpsearch" resultMap="EmpPostResult"
		parameterType="Emp" flushCache="true"  >
		select * from b_emp emp
		left join b_post post on emp.empPostNo = post.postNo
		<include refid="likewhere"></include>
		order by emp.empState desc
	</select>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章