mybatis分為一級緩存(存在內(nèi)存中)和二級緩存(存在硬件中)
mybatis默認開啟一級緩存冗酿,如果用同樣的SqlSession對象查詢相同的數(shù)據(jù)秸应,則只會在第一次查詢時向數(shù)據(jù)庫發(fā)送sql語句,并將查詢的結(jié)果放入到SqlSession中沪曙,后續(xù)查詢鹊奖,都從SqlSession中獲取查詢結(jié)果吠裆。
二級緩存渐逃,mybatis默認沒有開啟二級緩存够掠,需要手動配置。
在mybatis.xml文件中配置
<茄菊!--聲明開啟二級緩存->
<setting name = "cacheEnabled" value = "true"/>
需要二級緩存完全生效疯潭,還需要在具體的mapper.xml 中配置
<!--聲明此namespace開啟二級緩存-->
<cache/>
且需要將準備緩存的對象序列化 面殖,否則會報異常 NotSerializableException
觸發(fā)將對象寫入緩存的時機:SqlSession對象的close()方法
二級緩存的范圍是 namespace(包名.類名)
SqlSession對象只要執(zhí)行了commit()方法竖哩,將會清除所有緩存