Mybatis個人學習筆記(六) 延遲載入與快取

2021-10-07 22:31:07 字數 1322 閱讀 4822

在真正使用資料時才發起查詢,不用的時候不查詢,按需載入。(懶載入)

舉例:乙個使用者關聯100個賬戶,查詢使用者時,是否需要把關聯的賬戶資訊全部查詢出來?

舉例:查詢賬戶時,需要用到使用者資訊,則需要立即把關聯的使用者資訊一起查詢出來

只要以呼叫方法,立即發起查詢

在對應的四種表關係中:

一對多,多對多:通常採用延遲載入

一對一,多對一:通常採用立即載入

舉例:iacountdao.xml:實現查詢賬戶時對使用者資訊的延遲載入(正常情形下不使用)

select * from account

select * from account where uid = #

iuserdao.xml實現查詢使用者時對多個賬戶資訊的延遲載入

select * from user

select * from user where id = #

association標籤對account類中的要延遲載入的user屬性進行配置。

值得注意的是:sql查詢語句不再直接對兩個表進行查詢,而是僅對當前表查詢,對相關表的查詢則通過相關表對映檔案裡面的對應sql語句實現。

比如使用者查詢所有操作,會通過iuserdao中的findall()先把使用者表中的資訊查詢出來,然後在呼叫iaccountdao類的findaccountbyuid()方法查詢賬戶資訊

存在於記憶體中的臨時資料,目的是減少和資料庫的互動次數,提高執行效率。適用於經常查詢且不經常改變的資料,另外應保證資料的正確與否對最終的結果影響不大。

當執行查詢操作後,查詢結果存入到sqlsession提供的map結構的一塊區域。當再次查詢同樣資料時,mybatis會先去sqlsession查詢是否有,有則直接用。當呼叫修改,新增,刪除或關閉sqlsession物件時,快取清空。另外還可以主動呼叫clearcache()方法。

1) 讓mybatis框架支援二級快取(主配置檔案)預設為true,可不配置

2)讓當前的對映檔案支援二級快取(對映檔案)

3)讓當前操作支援二級快取(在select 標籤中)

select * from userinfo

Mybatis快取機制 個人學習筆記

以作用域來區分快取分為 一級快取 sqlsession,預設開啟 二級快取 namespace,預設關閉 都預設也是採用 perpetualcache,hashmap 儲存。一級快取 預設開啟,作用於sqlsession。執行第一次查詢時,會將資料存到 這個sqlsession 一級快取中 之後如果...

個人學習筆記 Mybatis框架學習 5

開啟延遲載入的支援 lazyloadingenabled value true aggressivelazyloading value false settings 之後在相應的對映關係物件配置時,引入select屬性,屬性的值配置對應的延時載入要呼叫的語句,例如 配置user物件中accounts...

redis個人學習筆記 六 Redis的發布訂閱

程序間的一種訊息通訊模式 傳送者 pub 傳送訊息,訂閱者 sub 接收訊息。psubscribe pattem pattern 訂閱乙個或者多個符合給定模式的頻道 pubsub subcommand argument argument 檢視訂閱與發布系統狀態 publish channel mes...