1.修改配置文件mybatis-config.xml加入<setting?name="cacheEnabled"value="true"/>,全局配置參數(shù),需要時(shí)再設(shè)置

cacheEnabled 介紹
描述 : cacheEnabled
允許值: 對(duì)在此配置文件下的所有cache 進(jìn)行全局性開(kāi)/關(guān)設(shè)置。
默認(rèn)值 (true/false): true?
2.在mapper.xml中開(kāi)啟二緩存,mapper.xml下的sql執(zhí)行完成會(huì)存儲(chǔ)到它的緩存區(qū),如:

開(kāi)啟緩存后,第一次查詢會(huì)執(zhí)行sql,第二次及以后的查詢都會(huì)從緩存中讀取數(shù)據(jù)

注意:開(kāi)啟緩存的弊端是數(shù)據(jù)沒(méi)有實(shí)時(shí)性,當(dāng)數(shù)據(jù)庫(kù)中的數(shù)據(jù)一旦修改,查詢的數(shù)據(jù)還是緩存中的數(shù)據(jù)沒(méi)有實(shí)時(shí)性,對(duì)于某些需要實(shí)時(shí)性顯示數(shù)據(jù)的接口我們可以設(shè)置useCache="false",設(shè)置該屬性后,該接口每次查詢出來(lái)都是去執(zhí)行sql查詢出實(shí)時(shí)性數(shù)據(jù)。
相關(guān)配置說(shuō)明:
①.設(shè)置useCache=false可以禁用當(dāng)前select語(yǔ)句的二級(jí)緩存,即每次查詢都會(huì)發(fā)出sql去查詢,默認(rèn)情況是true,即該sql使用二級(jí)緩存。
[html]view plaincopy
<select?id="findOrderListResultMap"?resultMap="ordersUserMap"?useCache="false">??
總結(jié):針對(duì)每次查詢都需要最新的數(shù)據(jù)sql,要設(shè)置成useCache=false,禁用二級(jí)緩存。
②.清空緩存
[html]
<insert?id="insertUser"?parameterType="cn.itcast.mybatis.po.User"?flushCache="true">??
總結(jié):一般下執(zhí)行完commit操作都需要刷新緩存,flushCache=true表示刷新緩存,這樣可以避免數(shù)據(jù)庫(kù)臟讀。
注意:
(1)當(dāng)為select語(yǔ)句時(shí):
flushCache默認(rèn)為false,表示任何時(shí)候語(yǔ)句被調(diào)用,都不會(huì)去清空本地緩存和二級(jí)緩存。
useCache默認(rèn)為true,表示會(huì)將本條語(yǔ)句的結(jié)果進(jìn)行二級(jí)緩存。
(2)當(dāng)為insert、update、delete語(yǔ)句時(shí):
flushCache默認(rèn)為true,表示任何時(shí)候語(yǔ)句被調(diào)用,都會(huì)導(dǎo)致本地緩存和二級(jí)緩存被清空。
useCache屬性在該情況下沒(méi)有。
當(dāng)為select語(yǔ)句的時(shí)候,如果沒(méi)有去配置flushCache、useCache,那么默認(rèn)是啟用緩存的,所以,如果有必要,那么就需要人工修改配置
3.對(duì)應(yīng)的pojo實(shí)現(xiàn)序列化(implements Serializable)
4.mybatis自身實(shí)現(xiàn)二級(jí)緩存弊端在于只能作用于數(shù)據(jù)庫(kù),此時(shí)需要我們引用第三方庫(kù)作為緩存庫(kù),這樣緩存更具有擴(kuò)展性。。。(待續(xù))