W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
問題: Mybatis的一級緩存和二級緩存?
1)一級緩存 Mybatis的一級緩存是指SQLSession,一級緩存的作用域是SQlSession, Mabits默認(rèn)開啟一級緩存。 在同一個SqlSession中,執(zhí)行相同的SQL查詢時;第一次會去查詢數(shù)據(jù)庫,并寫在緩存中,第二次會直接從緩存中取。 當(dāng)執(zhí)行SQL時候兩次查詢中間發(fā)生了增刪改的操作,則SQLSession的緩存會被清空。 每次查詢會先去緩存中找,如果找不到,再去數(shù)據(jù)庫查詢,然后把結(jié)果寫到緩存中。 Mybatis的內(nèi)部緩存使用一個HashMap,key為hashcode+statementId+sql語句。Value為查詢出來的結(jié)果集映射成的java對象。 SqlSession執(zhí)行insert、update、delete等操作commit后會清空該SQLSession緩存。
2)二級緩存 二級緩存是mapper級別的,Mybatis默認(rèn)是沒有開啟二級緩存的。 第一次調(diào)用mapper下的SQL去查詢用戶的信息,查詢到的信息會存放代該mapper對應(yīng)的二級緩存區(qū)域。 第二次調(diào)用namespace下的mapper映射文件中,相同的sql去查詢用戶信息,會去對應(yīng)的二級緩存內(nèi)取結(jié)果。 如果調(diào)用相同namespace下的mapepr映射文件中增刪改sql,并執(zhí)行了commit操作,此時會情況該
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: