在真正使用資料時才發起查詢,不用的時候不查詢,按需載入。(懶載入)
舉例:乙個使用者關聯100個賬戶,查詢使用者時,是否需要把關聯的賬戶資訊全部查詢出來?
舉例:查詢賬戶時,需要用到使用者資訊,則需要立即把關聯的使用者資訊一起查詢出來
只要以呼叫方法,立即發起查詢
在對應的四種表關係中:
一對多,多對多:通常採用延遲載入
一對一,多對一:通常採用立即載入
舉例:iacountdao.xml:實現查詢賬戶時對使用者資訊的延遲載入(正常情形下不使用)
iuserdao.xml實現查詢使用者時對多個賬戶資訊的延遲載入
select * from account
select * from account where uid = #
association標籤對account類中的要延遲載入的user屬性進行配置。
select * from user
select * from user where id = #
值得注意的是: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...